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.
- package/README.md +29 -0
- package/bin/swipl +0 -0
- package/bin/swipl-win +0 -0
- package/build-manifest.json +70 -0
- package/lib/cmake/swipl/SWIPLConfig.cmake +21 -0
- package/lib/cmake/swipl/SWIPLConfigVersion.cmake +65 -0
- package/lib/cmake/swipl/SWIPLTargets-release.cmake +28 -0
- package/lib/cmake/swipl/SWIPLTargets.cmake +109 -0
- package/lib/swipl/ABI +1 -0
- package/lib/swipl/LICENSE +41 -0
- package/lib/swipl/README.md +116 -0
- package/lib/swipl/app/README.md +25 -0
- package/lib/swipl/app/app.pl +87 -0
- package/lib/swipl/app/pack.pl +350 -0
- package/lib/swipl/app/qlf.pl +521 -0
- package/lib/swipl/app/splfr.pl +177 -0
- package/lib/swipl/app/sys.pl +310 -0
- package/lib/swipl/bin/swipl.home +1 -0
- package/lib/swipl/boot/apply.pl +73 -0
- package/lib/swipl/boot/attvar.pl +344 -0
- package/lib/swipl/boot/autoload.pl +1226 -0
- package/lib/swipl/boot/bags.pl +283 -0
- package/lib/swipl/boot/dcg.pl +388 -0
- package/lib/swipl/boot/dicts.pl +193 -0
- package/lib/swipl/boot/dwim.pl +485 -0
- package/lib/swipl/boot/engines.pl +152 -0
- package/lib/swipl/boot/expand.pl +1628 -0
- package/lib/swipl/boot/gc.pl +65 -0
- package/lib/swipl/boot/history.pl +304 -0
- package/lib/swipl/boot/init.pl +4682 -0
- package/lib/swipl/boot/iri.pl +64 -0
- package/lib/swipl/boot/license.pl +390 -0
- package/lib/swipl/boot/load.pl +81 -0
- package/lib/swipl/boot/messages.pl +2521 -0
- package/lib/swipl/boot/packs.pl +306 -0
- package/lib/swipl/boot/predopts.pl +154 -0
- package/lib/swipl/boot/qlf.pl +141 -0
- package/lib/swipl/boot/rc.pl +263 -0
- package/lib/swipl/boot/syspred.pl +1634 -0
- package/lib/swipl/boot/tabling.pl +2321 -0
- package/lib/swipl/boot/threads.pl +42 -0
- package/lib/swipl/boot/toplevel.pl +2248 -0
- package/lib/swipl/boot/topvars.pl +261 -0
- package/lib/swipl/boot.prc +0 -0
- package/lib/swipl/cmake/swipl.cmake +131 -0
- package/lib/swipl/customize/README.md +23 -0
- package/lib/swipl/customize/edit +101 -0
- package/lib/swipl/customize/init.pl +164 -0
- package/lib/swipl/demo/README.md +33 -0
- package/lib/swipl/demo/likes.pl +44 -0
- package/lib/swipl/doc/packages/examples/chr/bool.chr +281 -0
- package/lib/swipl/doc/packages/examples/chr/chrdif.chr +87 -0
- package/lib/swipl/doc/packages/examples/chr/chrfreeze.chr +6 -0
- package/lib/swipl/doc/packages/examples/chr/family.chr +116 -0
- package/lib/swipl/doc/packages/examples/chr/fib.chr +24 -0
- package/lib/swipl/doc/packages/examples/chr/fibonacci.chr +31 -0
- package/lib/swipl/doc/packages/examples/chr/gcd.chr +28 -0
- package/lib/swipl/doc/packages/examples/chr/leq.chr +34 -0
- package/lib/swipl/doc/packages/examples/chr/listdom.chr +138 -0
- package/lib/swipl/doc/packages/examples/chr/primes.chr +29 -0
- package/lib/swipl/doc/packages/examples/http/README.md +98 -0
- package/lib/swipl/doc/packages/examples/http/calc.pl +92 -0
- package/lib/swipl/doc/packages/examples/http/demo_body.pl +232 -0
- package/lib/swipl/doc/packages/examples/http/demo_client.pl +165 -0
- package/lib/swipl/doc/packages/examples/http/demo_daemon.pl +38 -0
- package/lib/swipl/doc/packages/examples/http/demo_files.pl +50 -0
- package/lib/swipl/doc/packages/examples/http/demo_hello.pl +15 -0
- package/lib/swipl/doc/packages/examples/http/demo_login.pl +280 -0
- package/lib/swipl/doc/packages/examples/http/demo_openid.pl +177 -0
- package/lib/swipl/doc/packages/examples/http/demo_pwp.pl +20 -0
- package/lib/swipl/doc/packages/examples/http/demo_rest.pl +56 -0
- package/lib/swipl/doc/packages/examples/http/demo_threads.pl +52 -0
- package/lib/swipl/doc/packages/examples/http/linux-init-script +126 -0
- package/lib/swipl/doc/packages/examples/http/pwp/context.pwp +23 -0
- package/lib/swipl/doc/packages/examples/http/pwp/index.pwp +25 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp1.pwp +12 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp2.pwp +10 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp3.pwp +25 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp4.pwp +23 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp5.pwp +11 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp6.pwp +3 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp7.pwp +3 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp8.pwp +3 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwpdb.pl +12 -0
- package/lib/swipl/doc/packages/examples/http/systemd-script.service +18 -0
- package/lib/swipl/doc/packages/examples/http/upstart-script.conf +20 -0
- package/lib/swipl/doc/packages/examples/plunit/read.pl +17 -0
- package/lib/swipl/doc/packages/examples/plunit/simple.pl +33 -0
- package/lib/swipl/doc/packages/examples/ssl/client.pl +83 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/README +52 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.p12 +0 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/client/client-key.pem +30 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/cacert.pem +82 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/careq.pem +18 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/crlnumber +1 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt +3 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt.attr +1 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7C.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7D.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/private/cakey.pem +30 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/serial +1 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/server/server-cert.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/server/server-key.pem +30 -0
- package/lib/swipl/doc/packages/examples/ssl/https.pl +267 -0
- package/lib/swipl/doc/packages/examples/ssl/server.pl +106 -0
- package/lib/swipl/include/SWI-Prolog.h +1544 -0
- package/lib/swipl/include/SWI-Stream.h +537 -0
- package/lib/swipl/include/Yap/YapInterface.h +283 -0
- package/lib/swipl/include/sicstus/sicstus.h +452 -0
- package/lib/swipl/lib/x86_64-linux/cgi.so +0 -0
- package/lib/swipl/lib/x86_64-linux/crypt.so +0 -0
- package/lib/swipl/lib/x86_64-linux/crypto4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/double_metaphone.so +0 -0
- package/lib/swipl/lib/x86_64-linux/files.so +0 -0
- package/lib/swipl/lib/x86_64-linux/hashstream.so +0 -0
- package/lib/swipl/lib/x86_64-linux/http_stream.so +0 -0
- package/lib/swipl/lib/x86_64-linux/isub.so +0 -0
- package/lib/swipl/lib/x86_64-linux/json.so +0 -0
- package/lib/swipl/lib/x86_64-linux/libswipl.so.10 +0 -0
- package/lib/swipl/lib/x86_64-linux/mallocinfo.so +0 -0
- package/lib/swipl/lib/x86_64-linux/md54pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/memfile.so +0 -0
- package/lib/swipl/lib/x86_64-linux/ntriples.so +0 -0
- package/lib/swipl/lib/x86_64-linux/pcre4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/porter_stem.so +0 -0
- package/lib/swipl/lib/x86_64-linux/process.so +0 -0
- package/lib/swipl/lib/x86_64-linux/prolog_stream.so +0 -0
- package/lib/swipl/lib/x86_64-linux/rdf_db.so +0 -0
- package/lib/swipl/lib/x86_64-linux/readutil.so +0 -0
- package/lib/swipl/lib/x86_64-linux/rlimit.so +0 -0
- package/lib/swipl/lib/x86_64-linux/sched.so +0 -0
- package/lib/swipl/lib/x86_64-linux/sgml2pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/sha4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/snowball.so +0 -0
- package/lib/swipl/lib/x86_64-linux/socket.so +0 -0
- package/lib/swipl/lib/x86_64-linux/ssl4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/streaminfo.so +0 -0
- package/lib/swipl/lib/x86_64-linux/syslog.so +0 -0
- package/lib/swipl/lib/x86_64-linux/time.so +0 -0
- package/lib/swipl/lib/x86_64-linux/turtle.so +0 -0
- package/lib/swipl/lib/x86_64-linux/uid.so +0 -0
- package/lib/swipl/lib/x86_64-linux/unix.so +0 -0
- package/lib/swipl/lib/x86_64-linux/uri.so +0 -0
- package/lib/swipl/lib/x86_64-linux/websocket.so +0 -0
- package/lib/swipl/lib/x86_64-linux/zlib4pl.so +0 -0
- package/lib/swipl/library/INDEX.pl +1020 -0
- package/lib/swipl/library/aggregate.pl +755 -0
- package/lib/swipl/library/ansi_term.pl +653 -0
- package/lib/swipl/library/apply.pl +426 -0
- package/lib/swipl/library/apply_macros.pl +497 -0
- package/lib/swipl/library/arithmetic.pl +320 -0
- package/lib/swipl/library/assoc.pl +522 -0
- package/lib/swipl/library/atom.pl +169 -0
- package/lib/swipl/library/backcomp.pl +688 -0
- package/lib/swipl/library/base32.pl +291 -0
- package/lib/swipl/library/base64.pl +441 -0
- package/lib/swipl/library/broadcast.pl +161 -0
- package/lib/swipl/library/build/cmake.pl +137 -0
- package/lib/swipl/library/build/conan.pl +232 -0
- package/lib/swipl/library/build/make.pl +168 -0
- package/lib/swipl/library/build/tools.pl +825 -0
- package/lib/swipl/library/charsio.pl +195 -0
- package/lib/swipl/library/check.pl +1097 -0
- package/lib/swipl/library/check_installation.pl +912 -0
- package/lib/swipl/library/clp/INDEX.pl +157 -0
- package/lib/swipl/library/clp/bounds.pl +2036 -0
- package/lib/swipl/library/clp/clp_distinct.pl +263 -0
- package/lib/swipl/library/clp/clp_events.pl +92 -0
- package/lib/swipl/library/clp/clpb.pl +1896 -0
- package/lib/swipl/library/clp/clpfd.pl +7906 -0
- package/lib/swipl/library/clp/simplex.pl +1580 -0
- package/lib/swipl/library/codesio.pl +182 -0
- package/lib/swipl/library/coinduction.pl +183 -0
- package/lib/swipl/library/console_input.pl +289 -0
- package/lib/swipl/library/csv.pl +611 -0
- package/lib/swipl/library/ctypes.pl +161 -0
- package/lib/swipl/library/date.pl +370 -0
- package/lib/swipl/library/dcg/INDEX.pl +35 -0
- package/lib/swipl/library/dcg/basics.pl +514 -0
- package/lib/swipl/library/dcg/high_order.pl +227 -0
- package/lib/swipl/library/debug.pl +499 -0
- package/lib/swipl/library/dialect/bim.pl +186 -0
- package/lib/swipl/library/dialect/commons.pl +77 -0
- package/lib/swipl/library/dialect/eclipse/test_util_iso.pl +355 -0
- package/lib/swipl/library/dialect/hprolog/format.pl +44 -0
- package/lib/swipl/library/dialect/hprolog.pl +314 -0
- package/lib/swipl/library/dialect/ifprolog.pl +1317 -0
- package/lib/swipl/library/dialect/iso/iso_predicates.pl +277 -0
- package/lib/swipl/library/dialect/sicstus/README.TXT +1 -0
- package/lib/swipl/library/dialect/sicstus/arrays.pl +121 -0
- package/lib/swipl/library/dialect/sicstus/block.pl +278 -0
- package/lib/swipl/library/dialect/sicstus/lists.pl +167 -0
- package/lib/swipl/library/dialect/sicstus/ordsets.pl +52 -0
- package/lib/swipl/library/dialect/sicstus/sockets.pl +174 -0
- package/lib/swipl/library/dialect/sicstus/system.pl +262 -0
- package/lib/swipl/library/dialect/sicstus/terms.pl +57 -0
- package/lib/swipl/library/dialect/sicstus/timeout.pl +92 -0
- package/lib/swipl/library/dialect/sicstus.pl +582 -0
- package/lib/swipl/library/dialect/sicstus4/aggregate.pl +60 -0
- package/lib/swipl/library/dialect/sicstus4/between.pl +62 -0
- package/lib/swipl/library/dialect/sicstus4/clpfd.pl +75 -0
- package/lib/swipl/library/dialect/sicstus4/file_systems.pl +413 -0
- package/lib/swipl/library/dialect/sicstus4/lists.pl +274 -0
- package/lib/swipl/library/dialect/sicstus4/ordsets.pl +54 -0
- package/lib/swipl/library/dialect/sicstus4/samsort.pl +86 -0
- package/lib/swipl/library/dialect/sicstus4/sets.pl +124 -0
- package/lib/swipl/library/dialect/sicstus4/sockets.pl +164 -0
- package/lib/swipl/library/dialect/sicstus4/system.pl +80 -0
- package/lib/swipl/library/dialect/sicstus4/terms.pl +89 -0
- package/lib/swipl/library/dialect/sicstus4/timeout.pl +43 -0
- package/lib/swipl/library/dialect/sicstus4/types.pl +103 -0
- package/lib/swipl/library/dialect/sicstus4.pl +200 -0
- package/lib/swipl/library/dialect/swi/syspred_options.pl +250 -0
- package/lib/swipl/library/dialect/xsb/README.md +20 -0
- package/lib/swipl/library/dialect/xsb/basics.pl +318 -0
- package/lib/swipl/library/dialect/xsb/consult.pl +87 -0
- package/lib/swipl/library/dialect/xsb/curr_sym.pl +57 -0
- package/lib/swipl/library/dialect/xsb/error_handler.pl +111 -0
- package/lib/swipl/library/dialect/xsb/gensym.pl +53 -0
- package/lib/swipl/library/dialect/xsb/gpp.pl +138 -0
- package/lib/swipl/library/dialect/xsb/intern.pl +48 -0
- package/lib/swipl/library/dialect/xsb/lists.pl +47 -0
- package/lib/swipl/library/dialect/xsb/machine.pl +295 -0
- package/lib/swipl/library/dialect/xsb/ordsets.pl +53 -0
- package/lib/swipl/library/dialect/xsb/setof.pl +54 -0
- package/lib/swipl/library/dialect/xsb/source.pl +308 -0
- package/lib/swipl/library/dialect/xsb/standard.pl +169 -0
- package/lib/swipl/library/dialect/xsb/storage.pl +70 -0
- package/lib/swipl/library/dialect/xsb/string.pl +76 -0
- package/lib/swipl/library/dialect/xsb/thread.pl +62 -0
- package/lib/swipl/library/dialect/xsb/timed_call.pl +158 -0
- package/lib/swipl/library/dialect/xsb.pl +688 -0
- package/lib/swipl/library/dialect/yap/README.TXT +8 -0
- package/lib/swipl/library/dialect/yap.pl +283 -0
- package/lib/swipl/library/dialect.pl +123 -0
- package/lib/swipl/library/dicts.pl +399 -0
- package/lib/swipl/library/dif.pl +426 -0
- package/lib/swipl/library/edinburgh.pl +138 -0
- package/lib/swipl/library/edit.pl +783 -0
- package/lib/swipl/library/error.pl +495 -0
- package/lib/swipl/library/exceptions.pl +231 -0
- package/lib/swipl/library/explain.pl +543 -0
- package/lib/swipl/library/ext/RDF/INDEX.pl +25 -0
- package/lib/swipl/library/ext/RDF/rdf.pl +450 -0
- package/lib/swipl/library/ext/RDF/rdf_parser.pl +649 -0
- package/lib/swipl/library/ext/RDF/rdf_triple.pl +448 -0
- package/lib/swipl/library/ext/RDF/rdf_write.pl +701 -0
- package/lib/swipl/library/ext/RDF/rewrite_term.pl +177 -0
- package/lib/swipl/library/ext/chr/chr/a_star.pl +80 -0
- package/lib/swipl/library/ext/chr/chr/binomialheap.pl +142 -0
- package/lib/swipl/library/ext/chr/chr/builtins.pl +629 -0
- package/lib/swipl/library/ext/chr/chr/chr_compiler_errors.pl +179 -0
- package/lib/swipl/library/ext/chr/chr/chr_compiler_options.pl +382 -0
- package/lib/swipl/library/ext/chr/chr/chr_compiler_utility.pl +338 -0
- package/lib/swipl/library/ext/chr/chr/chr_debug.pl +59 -0
- package/lib/swipl/library/ext/chr/chr/chr_hashtable_store.pl +425 -0
- package/lib/swipl/library/ext/chr/chr/chr_integertable_store.pl +139 -0
- package/lib/swipl/library/ext/chr/chr/chr_messages.pl +176 -0
- package/lib/swipl/library/ext/chr/chr/chr_op.pl +53 -0
- package/lib/swipl/library/ext/chr/chr/chr_runtime.pl +1016 -0
- package/lib/swipl/library/ext/chr/chr/chr_translate.pl +25424 -0
- package/lib/swipl/library/ext/chr/chr/clean_code.pl +252 -0
- package/lib/swipl/library/ext/chr/chr/find.pl +78 -0
- package/lib/swipl/library/ext/chr/chr/guard_entailment.pl +19432 -0
- package/lib/swipl/library/ext/chr/chr/listmap.pl +108 -0
- package/lib/swipl/library/ext/chr/chr/pairlist.pl +78 -0
- package/lib/swipl/library/ext/chr/chr.pl +686 -0
- package/lib/swipl/library/ext/clib/INDEX.pl +158 -0
- package/lib/swipl/library/ext/clib/cgi.pl +86 -0
- package/lib/swipl/library/ext/clib/crypt.pl +44 -0
- package/lib/swipl/library/ext/clib/filesex.pl +644 -0
- package/lib/swipl/library/ext/clib/hash_stream.pl +119 -0
- package/lib/swipl/library/ext/clib/mallocinfo.pl +138 -0
- package/lib/swipl/library/ext/clib/md5.pl +68 -0
- package/lib/swipl/library/ext/clib/memfile.pl +61 -0
- package/lib/swipl/library/ext/clib/process.pl +573 -0
- package/lib/swipl/library/ext/clib/prolog_server.pl +157 -0
- package/lib/swipl/library/ext/clib/prolog_stream.pl +80 -0
- package/lib/swipl/library/ext/clib/rlimit.pl +54 -0
- package/lib/swipl/library/ext/clib/sched.pl +85 -0
- package/lib/swipl/library/ext/clib/sha.pl +162 -0
- package/lib/swipl/library/ext/clib/socket.pl +1102 -0
- package/lib/swipl/library/ext/clib/streaminfo.pl +103 -0
- package/lib/swipl/library/ext/clib/streampool.pl +136 -0
- package/lib/swipl/library/ext/clib/syslog.pl +180 -0
- package/lib/swipl/library/ext/clib/time.pl +194 -0
- package/lib/swipl/library/ext/clib/udp_broadcast.pl +975 -0
- package/lib/swipl/library/ext/clib/uid.pl +220 -0
- package/lib/swipl/library/ext/clib/unix.pl +317 -0
- package/lib/swipl/library/ext/clib/uri.pl +530 -0
- package/lib/swipl/library/ext/clib/uuid.pl +207 -0
- package/lib/swipl/library/ext/http/http/INDEX.pl +266 -0
- package/lib/swipl/library/ext/http/http/README.md +34 -0
- package/lib/swipl/library/ext/http/http/ax.pl +189 -0
- package/lib/swipl/library/ext/http/http/dcg_basics.pl +49 -0
- package/lib/swipl/library/ext/http/http/graphql.pl +1367 -0
- package/lib/swipl/library/ext/http/http/html_decl.pl +416 -0
- package/lib/swipl/library/ext/http/http/html_head.pl +654 -0
- package/lib/swipl/library/ext/http/http/html_quasiquotations.pl +120 -0
- package/lib/swipl/library/ext/http/http/html_write.pl +1425 -0
- package/lib/swipl/library/ext/http/http/htmx.pl +139 -0
- package/lib/swipl/library/ext/http/http/http_authenticate.pl +364 -0
- package/lib/swipl/library/ext/http/http/http_client.pl +412 -0
- package/lib/swipl/library/ext/http/http/http_cookie.pl +245 -0
- package/lib/swipl/library/ext/http/http/http_cors.pl +176 -0
- package/lib/swipl/library/ext/http/http/http_digest.pl +820 -0
- package/lib/swipl/library/ext/http/http/http_dirindex.pl +296 -0
- package/lib/swipl/library/ext/http/http/http_dispatch.pl +1552 -0
- package/lib/swipl/library/ext/http/http/http_dyn_workers.pl +214 -0
- package/lib/swipl/library/ext/http/http/http_error.pl +126 -0
- package/lib/swipl/library/ext/http/http/http_exception.pl +225 -0
- package/lib/swipl/library/ext/http/http/http_files.pl +163 -0
- package/lib/swipl/library/ext/http/http/http_header.pl +2820 -0
- package/lib/swipl/library/ext/http/http/http_hook.pl +106 -0
- package/lib/swipl/library/ext/http/http/http_host.pl +204 -0
- package/lib/swipl/library/ext/http/http/http_load.pl +113 -0
- package/lib/swipl/library/ext/http/http/http_log.pl +738 -0
- package/lib/swipl/library/ext/http/http/http_multipart_plugin.pl +232 -0
- package/lib/swipl/library/ext/http/http/http_open.pl +1821 -0
- package/lib/swipl/library/ext/http/http/http_openid.pl +1561 -0
- package/lib/swipl/library/ext/http/http/http_parameters.pl +504 -0
- package/lib/swipl/library/ext/http/http/http_path.pl +380 -0
- package/lib/swipl/library/ext/http/http/http_proxy.pl +80 -0
- package/lib/swipl/library/ext/http/http/http_pwp.pl +351 -0
- package/lib/swipl/library/ext/http/http/http_redis_plugin.pl +332 -0
- package/lib/swipl/library/ext/http/http/http_server.pl +105 -0
- package/lib/swipl/library/ext/http/http/http_server_files.pl +126 -0
- package/lib/swipl/library/ext/http/http/http_server_health.pl +186 -0
- package/lib/swipl/library/ext/http/http/http_session.pl +1040 -0
- package/lib/swipl/library/ext/http/http/http_sgml_plugin.pl +137 -0
- package/lib/swipl/library/ext/http/http/http_stream.pl +376 -0
- package/lib/swipl/library/ext/http/http/http_unix_daemon.pl +989 -0
- package/lib/swipl/library/ext/http/http/http_wrapper.pl +559 -0
- package/lib/swipl/library/ext/http/http/hub.pl +600 -0
- package/lib/swipl/library/ext/http/http/js_write.pl +461 -0
- package/lib/swipl/library/ext/http/http/mimepack.pl +224 -0
- package/lib/swipl/library/ext/http/http/mimetype.pl +276 -0
- package/lib/swipl/library/ext/http/http/term_html.pl +797 -0
- package/lib/swipl/library/ext/http/http/thread_httpd.pl +1181 -0
- package/lib/swipl/library/ext/http/http/web/css/dirindex.css +24 -0
- package/lib/swipl/library/ext/http/http/web/css/openid.css +57 -0
- package/lib/swipl/library/ext/http/http/web/icons/back.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/c.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/compressed.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/folder.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/generic.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/layout.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/openid-logo-square.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/openid-logo-tiny.png +0 -0
- package/lib/swipl/library/ext/http/http/websocket.pl +729 -0
- package/lib/swipl/library/ext/http/http/yadis.pl +205 -0
- package/lib/swipl/library/ext/json/INDEX.pl +36 -0
- package/lib/swipl/library/ext/json/http/INDEX.pl +16 -0
- package/lib/swipl/library/ext/json/http/http_json.pl +490 -0
- package/lib/swipl/library/ext/json/http/js_grammar.pl +53 -0
- package/lib/swipl/library/ext/json/http/json.pl +48 -0
- package/lib/swipl/library/ext/json/http/json_convert.pl +48 -0
- package/lib/swipl/library/ext/json/json.pl +1215 -0
- package/lib/swipl/library/ext/json/json_convert.pl +681 -0
- package/lib/swipl/library/ext/json/json_grammar.pl +349 -0
- package/lib/swipl/library/ext/json/json_rpc_client.pl +423 -0
- package/lib/swipl/library/ext/json/json_rpc_common.pl +104 -0
- package/lib/swipl/library/ext/json/json_rpc_server.pl +489 -0
- package/lib/swipl/library/ext/json/json_schema.pl +2111 -0
- package/lib/swipl/library/ext/nlp/INDEX.pl +15 -0
- package/lib/swipl/library/ext/nlp/double_metaphone.pl +86 -0
- package/lib/swipl/library/ext/nlp/isub.pl +162 -0
- package/lib/swipl/library/ext/nlp/porter_stem.pl +50 -0
- package/lib/swipl/library/ext/nlp/snowball.pl +97 -0
- package/lib/swipl/library/ext/pcre/INDEX.pl +17 -0
- package/lib/swipl/library/ext/pcre/pcre.pl +974 -0
- package/lib/swipl/library/ext/plunit/INDEX.pl +20 -0
- package/lib/swipl/library/ext/plunit/plunit.pl +2631 -0
- package/lib/swipl/library/ext/plunit/test_wizard.pl +249 -0
- package/lib/swipl/library/ext/semweb/semweb/INDEX.pl +288 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf11.pl +2106 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf11_containers.pl +299 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_cache.pl +278 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_compare.pl +132 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_db.pl +3468 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_edit.pl +1145 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_http_plugin.pl +274 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_library.pl +1021 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_litindex.pl +1035 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_ntriples.pl +422 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_persistency.pl +1576 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_portray.pl +182 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_prefixes.pl +681 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_sandbox.pl +153 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_turtle.pl +54 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_turtle_write.pl +1587 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_zlib_plugin.pl +52 -0
- package/lib/swipl/library/ext/semweb/semweb/rdfa.pl +1510 -0
- package/lib/swipl/library/ext/semweb/semweb/rdfs.pl +475 -0
- package/lib/swipl/library/ext/semweb/semweb/sparql_client.pl +643 -0
- package/lib/swipl/library/ext/semweb/semweb/turtle.pl +455 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML4.dcl +88 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML4.dtd +1092 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML4.soc +6 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML5.dtd +906 -0
- package/lib/swipl/library/ext/sgml/DTD/HTMLlat1.ent +195 -0
- package/lib/swipl/library/ext/sgml/DTD/HTMLspec.ent +77 -0
- package/lib/swipl/library/ext/sgml/DTD/HTMLsym.ent +241 -0
- package/lib/swipl/library/ext/sgml/INDEX.pl +64 -0
- package/lib/swipl/library/ext/sgml/c14n2.pl +203 -0
- package/lib/swipl/library/ext/sgml/iso_639.pl +631 -0
- package/lib/swipl/library/ext/sgml/pwp.pl +705 -0
- package/lib/swipl/library/ext/sgml/sgml.pl +815 -0
- package/lib/swipl/library/ext/sgml/sgml_write.pl +1003 -0
- package/lib/swipl/library/ext/sgml/xpath.pl +620 -0
- package/lib/swipl/library/ext/sgml/xsdp_types.pl +232 -0
- package/lib/swipl/library/ext/ssl/INDEX.pl +60 -0
- package/lib/swipl/library/ext/ssl/crypto.pl +1015 -0
- package/lib/swipl/library/ext/ssl/http/INDEX.pl +5 -0
- package/lib/swipl/library/ext/ssl/http/http_ssl_plugin.pl +296 -0
- package/lib/swipl/library/ext/ssl/saml.pl +609 -0
- package/lib/swipl/library/ext/ssl/ssl.pl +647 -0
- package/lib/swipl/library/ext/ssl/xmldsig.pl +391 -0
- package/lib/swipl/library/ext/ssl/xmlenc.pl +354 -0
- package/lib/swipl/library/ext/zlib/INDEX.pl +8 -0
- package/lib/swipl/library/ext/zlib/zlib.pl +112 -0
- package/lib/swipl/library/fastrw.pl +105 -0
- package/lib/swipl/library/files.pl +80 -0
- package/lib/swipl/library/gensym.pl +111 -0
- package/lib/swipl/library/git.pl +1027 -0
- package/lib/swipl/library/hashtable.pl +365 -0
- package/lib/swipl/library/heaps.pl +252 -0
- package/lib/swipl/library/hotfix.pl +239 -0
- package/lib/swipl/library/http/jquery.pl +103 -0
- package/lib/swipl/library/http/web/js/jquery-3.6.0.min.js +2 -0
- package/lib/swipl/library/increval.pl +217 -0
- package/lib/swipl/library/intercept.pl +263 -0
- package/lib/swipl/library/iostream.pl +237 -0
- package/lib/swipl/library/iri_scheme/file.pl +70 -0
- package/lib/swipl/library/lazy_lists.pl +481 -0
- package/lib/swipl/library/listing.pl +1362 -0
- package/lib/swipl/library/lists.pl +860 -0
- package/lib/swipl/library/lynx/INDEX.pl +14 -0
- package/lib/swipl/library/lynx/format.pl +380 -0
- package/lib/swipl/library/lynx/html_style.pl +129 -0
- package/lib/swipl/library/lynx/html_text.pl +865 -0
- package/lib/swipl/library/lynx/pldoc_style.pl +87 -0
- package/lib/swipl/library/macros.pl +451 -0
- package/lib/swipl/library/main.pl +1200 -0
- package/lib/swipl/library/make.pl +197 -0
- package/lib/swipl/library/modules.pl +129 -0
- package/lib/swipl/library/nb_rbtrees.pl +267 -0
- package/lib/swipl/library/nb_set.pl +203 -0
- package/lib/swipl/library/obfuscate.pl +115 -0
- package/lib/swipl/library/occurs.pl +241 -0
- package/lib/swipl/library/operators.pl +182 -0
- package/lib/swipl/library/option.pl +388 -0
- package/lib/swipl/library/optparse.pl +966 -0
- package/lib/swipl/library/ordsets.pl +518 -0
- package/lib/swipl/library/oset.pl +160 -0
- package/lib/swipl/library/pairs.pl +187 -0
- package/lib/swipl/library/persistency.pl +713 -0
- package/lib/swipl/library/pio.pl +47 -0
- package/lib/swipl/library/portray_text.pl +277 -0
- package/lib/swipl/library/pprint.pl +940 -0
- package/lib/swipl/library/predicate_options.pl +975 -0
- package/lib/swipl/library/prolog_autoload.pl +233 -0
- package/lib/swipl/library/prolog_breakpoints.pl +396 -0
- package/lib/swipl/library/prolog_clause.pl +1104 -0
- package/lib/swipl/library/prolog_code.pl +416 -0
- package/lib/swipl/library/prolog_codewalk.pl +1248 -0
- package/lib/swipl/library/prolog_colour.pl +3301 -0
- package/lib/swipl/library/prolog_colour.qlf +0 -0
- package/lib/swipl/library/prolog_config.pl +154 -0
- package/lib/swipl/library/prolog_coverage.pl +1333 -0
- package/lib/swipl/library/prolog_debug.pl +404 -0
- package/lib/swipl/library/prolog_deps.pl +675 -0
- package/lib/swipl/library/prolog_evaluable.pl +234 -0
- package/lib/swipl/library/prolog_format.pl +219 -0
- package/lib/swipl/library/prolog_history.pl +161 -0
- package/lib/swipl/library/prolog_jiti.pl +333 -0
- package/lib/swipl/library/prolog_locale.pl +61 -0
- package/lib/swipl/library/prolog_metainference.pl +307 -0
- package/lib/swipl/library/prolog_pack.pl +3906 -0
- package/lib/swipl/library/prolog_profile.pl +346 -0
- package/lib/swipl/library/prolog_qlfmake.pl +533 -0
- package/lib/swipl/library/prolog_source.pl +1188 -0
- package/lib/swipl/library/prolog_stack.pl +794 -0
- package/lib/swipl/library/prolog_trace.pl +365 -0
- package/lib/swipl/library/prolog_versions.pl +347 -0
- package/lib/swipl/library/prolog_wrap.pl +164 -0
- package/lib/swipl/library/prolog_xref.pl +3090 -0
- package/lib/swipl/library/prolog_xref.qlf +0 -0
- package/lib/swipl/library/pure_input.pl +266 -0
- package/lib/swipl/library/qpforeign.pl +695 -0
- package/lib/swipl/library/qsave.pl +1516 -0
- package/lib/swipl/library/quasi_quotations.pl +300 -0
- package/lib/swipl/library/quintus.pl +437 -0
- package/lib/swipl/library/random.pl +459 -0
- package/lib/swipl/library/rbtrees.pl +1153 -0
- package/lib/swipl/library/readln.pl +256 -0
- package/lib/swipl/library/readutil.pl +304 -0
- package/lib/swipl/library/record.pl +544 -0
- package/lib/swipl/library/rwlocks.pl +172 -0
- package/lib/swipl/library/sandbox.pl +1384 -0
- package/lib/swipl/library/semweb/dc.rdfs +198 -0
- package/lib/swipl/library/semweb/eor.rdfs +95 -0
- package/lib/swipl/library/semweb/owl.owl +287 -0
- package/lib/swipl/library/semweb/rdf_library.ttl +90 -0
- package/lib/swipl/library/semweb/rdfs.rdfs +251 -0
- package/lib/swipl/library/settings.pl +755 -0
- package/lib/swipl/library/shell.pl +462 -0
- package/lib/swipl/library/shlib.pl +670 -0
- package/lib/swipl/library/solution_sequences.pl +439 -0
- package/lib/swipl/library/sort.pl +119 -0
- package/lib/swipl/library/statistics.pl +541 -0
- package/lib/swipl/library/streams.pl +118 -0
- package/lib/swipl/library/strings.pl +469 -0
- package/lib/swipl/library/system.pl +95 -0
- package/lib/swipl/library/tables.pl +381 -0
- package/lib/swipl/library/tableutil.pl +771 -0
- package/lib/swipl/library/tabling.pl +42 -0
- package/lib/swipl/library/terms.pl +457 -0
- package/lib/swipl/library/theme/auto.pl +61 -0
- package/lib/swipl/library/theme/dark.pl +455 -0
- package/lib/swipl/library/theme/light.pl +45 -0
- package/lib/swipl/library/thread.pl +810 -0
- package/lib/swipl/library/thread_pool.pl +508 -0
- package/lib/swipl/library/threadutil.pl +574 -0
- package/lib/swipl/library/tty.pl +316 -0
- package/lib/swipl/library/ugraphs.pl +644 -0
- package/lib/swipl/library/unicode/INDEX.pl +6 -0
- package/lib/swipl/library/unicode/blocks.pl +414 -0
- package/lib/swipl/library/url.pl +1129 -0
- package/lib/swipl/library/utf8.pl +145 -0
- package/lib/swipl/library/varnumbers.pl +221 -0
- package/lib/swipl/library/vm.pl +251 -0
- package/lib/swipl/library/wfs.pl +205 -0
- package/lib/swipl/library/when.pl +263 -0
- package/lib/swipl/library/writef.pl +278 -0
- package/lib/swipl/library/www_browser.pl +251 -0
- package/lib/swipl/library/yall.pl +574 -0
- package/lib/swipl/library/zip.pl +211 -0
- package/lib/swipl/swipl.home +1 -0
- package/lib/vendor/libcrypto.so.3 +0 -0
- package/lib/vendor/libpcre2-8.so.0 +0 -0
- package/lib/vendor/libssl.so.3 +0 -0
- package/lib/vendor/libz.so.1 +0 -0
- package/licenses/OpenSSL-LICENSE.txt +177 -0
- package/licenses/PCRE2-COPYING +5 -0
- package/licenses/README.md +12 -0
- package/licenses/SWI-Prolog-LICENSE +41 -0
- package/licenses/zlib-LICENSE +22 -0
- package/package.json +27 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
2
|
+
%%
|
|
3
|
+
%% Slim Abdennadher, Thom Fruehwirth, LMU, July 1998
|
|
4
|
+
%% Finite (enumeration, list) domain solver over integers
|
|
5
|
+
%%
|
|
6
|
+
%% * ported to hProlog by Tom Schrijvers, K.U.Leuven
|
|
7
|
+
|
|
8
|
+
% :- module(listdom,[]).
|
|
9
|
+
|
|
10
|
+
:- use_module( library(chr)).
|
|
11
|
+
|
|
12
|
+
:- use_module( library(lists)).
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
%% for domain constraints
|
|
16
|
+
:- op( 700,xfx,'::').
|
|
17
|
+
:- op( 600,xfx,'..').
|
|
18
|
+
|
|
19
|
+
%% for inequality constraints
|
|
20
|
+
:- op( 700,xfx,lt).
|
|
21
|
+
:- op( 700,xfx,le).
|
|
22
|
+
:- op( 700,xfx,ne).
|
|
23
|
+
|
|
24
|
+
%% for domain constraints
|
|
25
|
+
?- op( 700,xfx,'::').
|
|
26
|
+
?- op( 600,xfx,'..').
|
|
27
|
+
|
|
28
|
+
%% for inequality constraints
|
|
29
|
+
?- op( 700,xfx,lt).
|
|
30
|
+
?- op( 700,xfx,le).
|
|
31
|
+
?- op( 700,xfx,ne).
|
|
32
|
+
|
|
33
|
+
:- constraints (::)/2, (le)/2, (lt)/2, (ne)/2, add/3, mult/3.
|
|
34
|
+
%% X::Dom - X must be element of the finite list domain Dom
|
|
35
|
+
|
|
36
|
+
%% special cases
|
|
37
|
+
X::[] <=> fail.
|
|
38
|
+
%%X::[Y] <=> X=Y.
|
|
39
|
+
%%X::[A|L] <=> ground(X) | (member(X,[A|L]) -> true).
|
|
40
|
+
|
|
41
|
+
%% intersection of domains for the same variable
|
|
42
|
+
X::L1, X::L2 <=> is_list(L1), is_list(L2) |
|
|
43
|
+
intersection(L1,L2,L) , X::L.
|
|
44
|
+
|
|
45
|
+
X::L, X::Min..Max <=> is_list(L) |
|
|
46
|
+
remove_lower(Min,L,L1), remove_higher(Max,L1,L2),
|
|
47
|
+
X::L2.
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
%% interaction with inequalities
|
|
51
|
+
|
|
52
|
+
X le Y, X::L1, Y::L2 ==> is_list(L1),is_list(L2),
|
|
53
|
+
min_list(L1,MinX), min_list(L2,MinY), MinX > MinY |
|
|
54
|
+
max_list(L2,MaxY), Y::MinX..MaxY.
|
|
55
|
+
X le Y, X::L1, Y::L2 ==> is_list(L1),is_list(L2),
|
|
56
|
+
max_list(L1,MaxX), max_list(L2,MaxY), MaxX > MaxY |
|
|
57
|
+
min_list(L1,MinX), X::MinX..MaxY.
|
|
58
|
+
|
|
59
|
+
X lt Y, X::L1, Y::L2 ==> is_list(L1), is_list(L2),
|
|
60
|
+
max_list(L1,MaxX), max_list(L2,MaxY),
|
|
61
|
+
MaxY1 is MaxY - 1, MaxY1 < MaxX |
|
|
62
|
+
min_list(L1,MinX), X::MinX..MaxY1.
|
|
63
|
+
X lt Y, X::L1, Y::L2 ==> is_list(L1), is_list(L2),
|
|
64
|
+
min_list(L1,MinX), min_list(L2,MinY),
|
|
65
|
+
MinX1 is MinX + 1, MinX1 > MinY |
|
|
66
|
+
max_list(L2,MaxY), Y :: MinX1..MaxY.
|
|
67
|
+
|
|
68
|
+
X ne Y \ Y::D <=> ground(X), is_list(D), member(X,D) | select(X,D,D1), Y::D1.
|
|
69
|
+
Y ne X \ Y::D <=> ground(X), is_list(D), member(X,D) | select(X,D,D1), Y::D1.
|
|
70
|
+
Y::D \ X ne Y <=> ground(X), is_list(D), \+ member(X,D) | true.
|
|
71
|
+
Y::D \ Y ne X <=> ground(X), is_list(D), \+ member(X,D) | true.
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
%% interaction with addition
|
|
75
|
+
%% no backpropagation yet!
|
|
76
|
+
|
|
77
|
+
add(X,Y,Z), X::L1, Y::L2 ==> is_list(L1), is_list(L2) |
|
|
78
|
+
all_addition(L1,L2,L3), Z::L3.
|
|
79
|
+
|
|
80
|
+
%% interaction with multiplication
|
|
81
|
+
%% no backpropagation yet!
|
|
82
|
+
|
|
83
|
+
mult(X,Y,Z), X::L1, Y::L2 ==> is_list(L1), is_list(L2) |
|
|
84
|
+
all_multiplication(L1,L2,L3), Z::L3.
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
%% auxiliary predicates =============================================
|
|
88
|
+
|
|
89
|
+
remove_lower(_,[],L1):- !, L1=[].
|
|
90
|
+
remove_lower(Min,[X|L],L1):-
|
|
91
|
+
X@<Min,
|
|
92
|
+
!,
|
|
93
|
+
remove_lower(Min,L,L1).
|
|
94
|
+
remove_lower(Min,[X|L],[X|L1]):-
|
|
95
|
+
remove_lower(Min,L,L1).
|
|
96
|
+
|
|
97
|
+
remove_higher(_,[],L1):- !, L1=[].
|
|
98
|
+
remove_higher(Max,[X|L],L1):-
|
|
99
|
+
X@>Max,
|
|
100
|
+
!,
|
|
101
|
+
remove_higher(Max,L,L1).
|
|
102
|
+
remove_higher(Max,[X|L],[X|L1]):-
|
|
103
|
+
remove_higher(Max,L,L1).
|
|
104
|
+
|
|
105
|
+
intersection([], _, []).
|
|
106
|
+
intersection([Head|L1tail], L2, L3) :-
|
|
107
|
+
memberchk(Head, L2),
|
|
108
|
+
!,
|
|
109
|
+
L3 = [Head|L3tail],
|
|
110
|
+
intersection(L1tail, L2, L3tail).
|
|
111
|
+
intersection([_|L1tail], L2, L3) :-
|
|
112
|
+
intersection(L1tail, L2, L3).
|
|
113
|
+
|
|
114
|
+
all_addition(L1,L2,L3) :-
|
|
115
|
+
setof(Z, X^Y^(member(X,L1), member(Y,L2), Z is X + Y), L3).
|
|
116
|
+
|
|
117
|
+
all_multiplication(L1,L2,L3) :-
|
|
118
|
+
setof(Z, X^Y^(member(X,L1), member(Y,L2), Z is X * Y), L3).
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
%% EXAMPLE ==========================================================
|
|
122
|
+
|
|
123
|
+
/*
|
|
124
|
+
?- X::[1,2,3,4,5,6,7], Y::[2,4,6,7,8,0], Y lt X, X::4..9, X ne Y,
|
|
125
|
+
add(X,Y,Z), mult(X,Y,Z).
|
|
126
|
+
*/
|
|
127
|
+
|
|
128
|
+
%% end of handler listdom.pl =================================================
|
|
129
|
+
%% ===========================================================================
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
/*
|
|
133
|
+
|
|
134
|
+
?- X::[1,2,3,4,5,6,7], Y::[2,4,6,7,8,0], Y lt X, X::4..9, X ne Y,
|
|
135
|
+
add(X,Y,Z), mult(X,Y,Z).
|
|
136
|
+
|
|
137
|
+
Bad call to builtin predicate: _9696 =.. ['add/3__0',AttVar4942,AttVar5155,AttVar6836|_9501] in predicate mknewterm / 3
|
|
138
|
+
*/
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
2
|
+
%%
|
|
3
|
+
%% Sieve of eratosthenes to compute primes
|
|
4
|
+
%% thom fruehwirth 920218-20, 980311
|
|
5
|
+
%% christian holzbaur 980207 for Sicstus CHR
|
|
6
|
+
%%
|
|
7
|
+
%% ported to hProlog by Tom Schrijvers
|
|
8
|
+
%% Updated to current CHR and added how to extract the primes by
|
|
9
|
+
%% Jan Wielemaker.
|
|
10
|
+
|
|
11
|
+
:- module(primes,
|
|
12
|
+
[ candidate/1, % +Max
|
|
13
|
+
primes/2 % +Max, -ListOfPrimes
|
|
14
|
+
]).
|
|
15
|
+
:- use_module(library(chr)).
|
|
16
|
+
|
|
17
|
+
:- chr_constraint candidate/1.
|
|
18
|
+
:- chr_constraint prime/1.
|
|
19
|
+
|
|
20
|
+
candidate(1) <=> true.
|
|
21
|
+
candidate(N) <=> prime(N), N1 is N - 1, candidate(N1).
|
|
22
|
+
|
|
23
|
+
absorb @ prime(Y) \ prime(X) <=> 0 is X mod Y | true.
|
|
24
|
+
|
|
25
|
+
primes(Max, Primes) :-
|
|
26
|
+
findall(P,
|
|
27
|
+
( candidate(Max),
|
|
28
|
+
current_chr_constraint(prime(P))),
|
|
29
|
+
Primes).
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# HTTP example files
|
|
2
|
+
|
|
3
|
+
This is a simple demo of the HTTP server facilities, providing a simple
|
|
4
|
+
body and the three documented server instantiations.
|
|
5
|
+
|
|
6
|
+
## The server main programs are:
|
|
7
|
+
|
|
8
|
+
$ demo_threads.pl :
|
|
9
|
+
Run threaded server. Requires SWI-Prolog with thread-support.
|
|
10
|
+
The server is started at port 3000 using server/0. server/2
|
|
11
|
+
allows to specify options. tm/0 provides a graphical display
|
|
12
|
+
of the runing threads. See source-file.
|
|
13
|
+
|
|
14
|
+
## Unix services demo:
|
|
15
|
+
|
|
16
|
+
$ demo_daemon.pl :
|
|
17
|
+
Demo script to run the SWI-Prolog HTTP server as a Unix
|
|
18
|
+
service.
|
|
19
|
+
|
|
20
|
+
$ linux-init-script :
|
|
21
|
+
/etc/init.d script for Debian and Redhat based Unix systems.
|
|
22
|
+
Must be configured.
|
|
23
|
+
|
|
24
|
+
$ upstart-script.conf :
|
|
25
|
+
Ubuntu `upstart` script. Must be configured and placed in
|
|
26
|
+
`/etc/init`
|
|
27
|
+
|
|
28
|
+
$ systemd-script.service :
|
|
29
|
+
Linux `systemd` script. The typical installation sequence
|
|
30
|
+
is:
|
|
31
|
+
|
|
32
|
+
cp systemd-script.service demo.service
|
|
33
|
+
<edit>
|
|
34
|
+
cp demo.service /etc/systemd/system
|
|
35
|
+
systemctl enable demo
|
|
36
|
+
systemctl start demo
|
|
37
|
+
journalctl -f -u demo
|
|
38
|
+
|
|
39
|
+
## Session management demo:
|
|
40
|
+
|
|
41
|
+
$ calc.pl :
|
|
42
|
+
Multi-threaded server with session management using the
|
|
43
|
+
html_write.pl library. See source for usage.
|
|
44
|
+
|
|
45
|
+
## File serving demo:
|
|
46
|
+
|
|
47
|
+
$ demo_files.pl :
|
|
48
|
+
Is a multi-threaded server that serves static files and
|
|
49
|
+
directory indices.
|
|
50
|
+
|
|
51
|
+
## Client demo
|
|
52
|
+
|
|
53
|
+
$ demo_client.pl :
|
|
54
|
+
Simple multi-threaded client to test the server under
|
|
55
|
+
different conditions. Requires SWI-Prolog with thread-support.
|
|
56
|
+
See source for usage.
|
|
57
|
+
|
|
58
|
+
## HTTP digest authentication
|
|
59
|
+
|
|
60
|
+
$ demo_digest.pl :
|
|
61
|
+
Simple demo showing HTTP digest authentication at work.
|
|
62
|
+
|
|
63
|
+
## Login and request rewriting
|
|
64
|
+
|
|
65
|
+
$ demo_login.pl :
|
|
66
|
+
Demonstrated using request rewriting and redefining status
|
|
67
|
+
pages to provide cookie based login with RBAC authorization.
|
|
68
|
+
|
|
69
|
+
$ demo_rest.pl :
|
|
70
|
+
Demonstrates path wildcarts for common REST api routing.
|
|
71
|
+
|
|
72
|
+
## Performance testing
|
|
73
|
+
|
|
74
|
+
A very early start of some routines to validate the server platform.
|
|
75
|
+
Eventually, stress_server.pl will serve different tests from multiple
|
|
76
|
+
locations and stress_client.pl will contain client code to run
|
|
77
|
+
individual tests as well as doing multi-threaded tests.
|
|
78
|
+
|
|
79
|
+
$ stress_server.pl :
|
|
80
|
+
Server platform.
|
|
81
|
+
|
|
82
|
+
$ stress_client.pl :
|
|
83
|
+
Client.
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/* $Id$
|
|
2
|
+
|
|
3
|
+
Part of SWI-Prolog
|
|
4
|
+
|
|
5
|
+
Author: Jan Wielemaker
|
|
6
|
+
E-mail: wielemak@science.uva.nl
|
|
7
|
+
WWW: http://www.swi-prolog.org
|
|
8
|
+
Copyright (C): Public domain
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
:- use_module(library('http/thread_httpd')).
|
|
12
|
+
:- use_module(library('http/html_write')).
|
|
13
|
+
:- use_module(library('http/http_session')).
|
|
14
|
+
:- use_module(library('http/http_error')).
|
|
15
|
+
|
|
16
|
+
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
17
|
+
This demo shows session state management in a very simple calculator
|
|
18
|
+
package. It also demonstrates the use of the html_write library. To use
|
|
19
|
+
it, start Prolog, load this file and run
|
|
20
|
+
|
|
21
|
+
?- server.
|
|
22
|
+
|
|
23
|
+
Now direct your browser to http://localhost:3000/
|
|
24
|
+
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
|
25
|
+
|
|
26
|
+
server :-
|
|
27
|
+
server(3000, []).
|
|
28
|
+
|
|
29
|
+
server(Port, Options) :-
|
|
30
|
+
http_server(reply,
|
|
31
|
+
[ port(Port),
|
|
32
|
+
timeout(20)
|
|
33
|
+
| Options
|
|
34
|
+
]).
|
|
35
|
+
|
|
36
|
+
reply(Request) :-
|
|
37
|
+
memberchk(path(Path), Request),
|
|
38
|
+
reply(Path, Request).
|
|
39
|
+
|
|
40
|
+
reply(/, _Request) :-
|
|
41
|
+
http_session_retractall(formula(_)),
|
|
42
|
+
Formula = 0,
|
|
43
|
+
http_session_assert(formula(Formula)),
|
|
44
|
+
page(Formula).
|
|
45
|
+
|
|
46
|
+
reply('/calc', Request) :-
|
|
47
|
+
memberchk(search(Search), Request),
|
|
48
|
+
memberchk(operation=Op, Search),
|
|
49
|
+
memberchk(value=AtomVal, Search),
|
|
50
|
+
atom_number(AtomVal, Val),
|
|
51
|
+
http_session_retract(formula(Formula0)),
|
|
52
|
+
debug(calc, 'Formula0 = ~w', [Formula0]),
|
|
53
|
+
Formula =.. [Op, Formula0, Val],
|
|
54
|
+
http_session_assert(formula(Formula)),
|
|
55
|
+
page(Formula).
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
page(Formula) :-
|
|
59
|
+
reply_page('HTTP Session DEMO',
|
|
60
|
+
[ h2('Simple session demo'),
|
|
61
|
+
form([ action('/calc'),
|
|
62
|
+
method('GET')
|
|
63
|
+
],
|
|
64
|
+
table([align(center), border(1)],
|
|
65
|
+
[ tr(td(\formula(Formula))),
|
|
66
|
+
tr(td([ \ops,
|
|
67
|
+
input([ name(value) ]),
|
|
68
|
+
input([ type(submit),
|
|
69
|
+
value('Calc!')
|
|
70
|
+
])
|
|
71
|
+
]))
|
|
72
|
+
]))
|
|
73
|
+
]).
|
|
74
|
+
|
|
75
|
+
formula(Formula) -->
|
|
76
|
+
{ sformat(S, '~w', [Formula]),
|
|
77
|
+
Value is Formula
|
|
78
|
+
},
|
|
79
|
+
html([ S, ' = ', Value ]).
|
|
80
|
+
|
|
81
|
+
ops -->
|
|
82
|
+
html(select(name(operation),
|
|
83
|
+
[ option([selected], +),
|
|
84
|
+
option([], -),
|
|
85
|
+
option([], /),
|
|
86
|
+
option([], *)
|
|
87
|
+
])).
|
|
88
|
+
|
|
89
|
+
reply_page(Title, Content) :-
|
|
90
|
+
phrase(page(title(Title), Content), HTML),
|
|
91
|
+
format('Content-type: text/html~n~n'),
|
|
92
|
+
print_html(HTML).
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/* Part of SWI-Prolog
|
|
2
|
+
|
|
3
|
+
Author: Jan Wielemaker
|
|
4
|
+
E-mail: J.Wielemaker@vu.nl
|
|
5
|
+
WWW: http://www.swi-prolog.org
|
|
6
|
+
Copyright (c) 2002-2025, University of Amsterdam
|
|
7
|
+
VU University Amsterdam
|
|
8
|
+
SWI-Prolog Solutions b.v.
|
|
9
|
+
All rights reserved.
|
|
10
|
+
|
|
11
|
+
Redistribution and use in source and binary forms, with or without
|
|
12
|
+
modification, are permitted provided that the following conditions
|
|
13
|
+
are met:
|
|
14
|
+
|
|
15
|
+
1. Redistributions of source code must retain the above copyright
|
|
16
|
+
notice, this list of conditions and the following disclaimer.
|
|
17
|
+
|
|
18
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
19
|
+
notice, this list of conditions and the following disclaimer in
|
|
20
|
+
the documentation and/or other materials provided with the
|
|
21
|
+
distribution.
|
|
22
|
+
|
|
23
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
24
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
25
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
26
|
+
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
27
|
+
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
28
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
29
|
+
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
30
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
31
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
32
|
+
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
33
|
+
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
34
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
:- module(demo_body,
|
|
38
|
+
[ reply/1
|
|
39
|
+
]).
|
|
40
|
+
:- use_module(library(http/http_client)).
|
|
41
|
+
|
|
42
|
+
:- discontiguous
|
|
43
|
+
reply/1.
|
|
44
|
+
|
|
45
|
+
/** <module> Demo implementation of some HTTP handlers
|
|
46
|
+
|
|
47
|
+
This module implements some HTTP handlers using rather low-level simple
|
|
48
|
+
primitives. It illustrates the process that HTTP handlers are similar to
|
|
49
|
+
CGI handlers in the sense that they need to write a CGI document to the
|
|
50
|
+
`current_output` stream. For high level primitives:
|
|
51
|
+
|
|
52
|
+
- More advanced dispatching of requests over predicates that implement
|
|
53
|
+
them is provided by http_handler/3 from library(http/http_dispatch).
|
|
54
|
+
- High level HTML is generated with library(http/html_write).
|
|
55
|
+
|
|
56
|
+
@see http://www.swi-prolog.org/howto/http/ provides a much better
|
|
57
|
+
tutorial introduction to the SWI-Prolog HTTP services.
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
reply(_) :-
|
|
62
|
+
flag(request, N, N+1),
|
|
63
|
+
fail.
|
|
64
|
+
|
|
65
|
+
% /
|
|
66
|
+
%
|
|
67
|
+
% Show available locations
|
|
68
|
+
|
|
69
|
+
reply(Request) :-
|
|
70
|
+
memberchk(path('/'), Request),
|
|
71
|
+
!,
|
|
72
|
+
format('Content-type: text/html~n~n', []),
|
|
73
|
+
format('<html>~n', []),
|
|
74
|
+
format('<h1>Some simple demo queries</h1>', []),
|
|
75
|
+
format('<ul>~n', []),
|
|
76
|
+
format(' <li><a href="quit">Say bye bye</a>'),
|
|
77
|
+
format(' <li><a href="env">Print environment</a>'),
|
|
78
|
+
format(' <li><a href="upload">Upload some data</a>'),
|
|
79
|
+
format(' <li><a href="xml">Reply with an XML document</a>'),
|
|
80
|
+
format(' <li><a href="foreign">Reply Chinese characters</a>'),
|
|
81
|
+
format(' <li><a href="work">Work hard for a while</a>'),
|
|
82
|
+
format(' <li><a href="error">Show what happens on an error</a>'),
|
|
83
|
+
format(' <li><a href="xpce?class=box">Return image (requires xpce)</a>'),
|
|
84
|
+
format(' <li><a href="otherwise">Otherwise, print request</a>'),
|
|
85
|
+
format('</ul>~n', []),
|
|
86
|
+
format('</html>~n', []).
|
|
87
|
+
|
|
88
|
+
% /quit
|
|
89
|
+
%
|
|
90
|
+
% Explicitely close the connection
|
|
91
|
+
|
|
92
|
+
reply(Request) :-
|
|
93
|
+
member(path('/quit'), Request),
|
|
94
|
+
!,
|
|
95
|
+
format('Connection: close~n', []),
|
|
96
|
+
format('Content-type: text/html~n~n', []),
|
|
97
|
+
format('Bye Bye~n').
|
|
98
|
+
|
|
99
|
+
% /env
|
|
100
|
+
%
|
|
101
|
+
% Reply with the output of printenv (Unix systems only).
|
|
102
|
+
|
|
103
|
+
reply(Request) :-
|
|
104
|
+
member(path('/env'), Request),
|
|
105
|
+
!,
|
|
106
|
+
expand_file_name(~, Home),
|
|
107
|
+
format('Content-type: text/html~n~n', []),
|
|
108
|
+
format('<html>~n', []),
|
|
109
|
+
flag(request, RN, RN),
|
|
110
|
+
format('Request ~d~n', [RN]),
|
|
111
|
+
format('<pre>~n', []),
|
|
112
|
+
format('HOME = ~w~n~n', [Home]),
|
|
113
|
+
open(pipe(printenv), read, Fd),
|
|
114
|
+
copy_stream_data(Fd, current_output),
|
|
115
|
+
close(Fd),
|
|
116
|
+
format('</pre>~n', []),
|
|
117
|
+
format('</html>~n', []).
|
|
118
|
+
|
|
119
|
+
% /upload
|
|
120
|
+
% /upload_reply
|
|
121
|
+
%
|
|
122
|
+
% Provide a form for uploading a file, and deal with the resulting
|
|
123
|
+
% upload. Contributed by Nicos Angelopoulos.
|
|
124
|
+
|
|
125
|
+
reply(Request) :-
|
|
126
|
+
member(path('/upload'), Request),
|
|
127
|
+
!,
|
|
128
|
+
format('Content-type: text/html~n~n', []),
|
|
129
|
+
format('<html>~n', []),
|
|
130
|
+
format('<form action="/upload_reply" enctype="multipart/form-data" method="post">~n', []),
|
|
131
|
+
format('<input type="file" name="datafile">'),
|
|
132
|
+
format('<input type="submit" name="sent">'),
|
|
133
|
+
format('</body>~n', []),
|
|
134
|
+
format('</html>~n', []).
|
|
135
|
+
|
|
136
|
+
reply(Request) :-
|
|
137
|
+
member(path('/upload_reply'), Request),
|
|
138
|
+
!,
|
|
139
|
+
format('Content-type: text/html~n~n', []),
|
|
140
|
+
format('<html>~n', []),
|
|
141
|
+
format('<pre>~n', []),
|
|
142
|
+
write( req(Request) ), nl,
|
|
143
|
+
http_read_data(Request, Data, []),
|
|
144
|
+
write( data(Data) ), nl,
|
|
145
|
+
format('</pre>'),
|
|
146
|
+
format('</body>~n', []),
|
|
147
|
+
format('</html>~n', []).
|
|
148
|
+
|
|
149
|
+
% /xml
|
|
150
|
+
%
|
|
151
|
+
% Return a simple formatted XML message.
|
|
152
|
+
|
|
153
|
+
reply(Request) :-
|
|
154
|
+
member(path('/xml'), Request),
|
|
155
|
+
!,
|
|
156
|
+
format('Content-type: text/xml~n~n', []),
|
|
157
|
+
format('\c
|
|
158
|
+
<message>
|
|
159
|
+
<head>
|
|
160
|
+
<from>Jan Wielemaker</from>
|
|
161
|
+
<to>Prolog users</to>
|
|
162
|
+
<subject>The SWI-Prolog web-server</subject>
|
|
163
|
+
</head>
|
|
164
|
+
<body>
|
|
165
|
+
<p>
|
|
166
|
+
This is the first demo of the web-server serving an XML message
|
|
167
|
+
</p>
|
|
168
|
+
</body>
|
|
169
|
+
</message>
|
|
170
|
+
', []).
|
|
171
|
+
|
|
172
|
+
% /foreign
|
|
173
|
+
%
|
|
174
|
+
% Test emitting text using UTF-8 encoding
|
|
175
|
+
|
|
176
|
+
reply(Request) :-
|
|
177
|
+
member(path('/foreign'), Request),
|
|
178
|
+
!,
|
|
179
|
+
format('Content-type: text/html~n~n', []),
|
|
180
|
+
format('\c
|
|
181
|
+
<html>
|
|
182
|
+
<head><title>Foreign characters</title></head>
|
|
183
|
+
<body>
|
|
184
|
+
<p>Chinese for book is \u5b66\u4e60
|
|
185
|
+
</body>
|
|
186
|
+
</html>
|
|
187
|
+
').
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
% /work
|
|
191
|
+
%
|
|
192
|
+
% Do a lot of work and then say 'ok'. Can be used to test
|
|
193
|
+
% concurrent access using the multi-threaded server.
|
|
194
|
+
|
|
195
|
+
reply(Request) :-
|
|
196
|
+
member(path('/work'), Request),
|
|
197
|
+
format(user_error, 'Starting work ...', []),
|
|
198
|
+
forall(between(1, 10000000, _), atom_codes(_, "hello")),
|
|
199
|
+
format(user_error, 'done!~n', []),
|
|
200
|
+
format('Content-type: text/plain~n~n', []),
|
|
201
|
+
format('ok~n').
|
|
202
|
+
|
|
203
|
+
% /error
|
|
204
|
+
%
|
|
205
|
+
% Produce an error. Load http_error to see the effect.
|
|
206
|
+
|
|
207
|
+
reply(Request) :-
|
|
208
|
+
member(path('/error'), Request),
|
|
209
|
+
A is 1/0,
|
|
210
|
+
format('Content-type: text/plain~n~n', []),
|
|
211
|
+
format('A = ~w~n', [A]).
|
|
212
|
+
|
|
213
|
+
% ... Otherwise
|
|
214
|
+
%
|
|
215
|
+
% Print the request itself.
|
|
216
|
+
|
|
217
|
+
reply(Request) :-
|
|
218
|
+
format('Content-type: text/html~n~n', []),
|
|
219
|
+
format('<html>~n', []),
|
|
220
|
+
format('<table border=1>~n'),
|
|
221
|
+
print_request(Request),
|
|
222
|
+
format('~n</table>~n'),
|
|
223
|
+
format('</html>~n', []).
|
|
224
|
+
|
|
225
|
+
print_request([]).
|
|
226
|
+
print_request([H|T]) :-
|
|
227
|
+
H =.. [Name, Value],
|
|
228
|
+
format('<tr><td>~w<td>~w~n', [Name, Value]),
|
|
229
|
+
print_request(T).
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|