Skip to content

SWI-Prolog/swipl-devel

Repository files navigation

CI

SWI-Prolog: A comprehensive Prolog implementation

SWI-Prolog is an open source (BSD-2) implementation of the Prolog language with many extensions. It is implemented in C (version 11) and Prolog and is available for many platforms (Linux, practically any POSIX like system, MacOS, Windows). All CPUs supported by Debian Linux are supported. For your browser or Node project, there is a WASM based NPM package. See the JavaScript API for details.

(SWI-)Prolog is a versatile language. It is being used for business rule validation, natural language processing, software verification, software refactoring, network configuration, security, robotics, reasoning in legal and medical domains, graph processing, machine learning (ILP, PLP), linked data (RDF), mathematical proofs, and much more.

If you are interested in commercial assistence to make SWI-Prolog work in your organization, please contact SWI-Prolog Solutions b.v..

Forking, cloning and submitting patches

This repository uses many Git submodules. This causes the common issue that fork and clone doesn't work. Instead, clone from https://github.com/SWI-Prolog/swipl-devel.git and then associate your clone with your fork (replace me with your github user name).

git clone --recurse-submodules https://github.com/SWI-Prolog/swipl-devel.git
cd swipl-devel
git remote add myfork [email protected]:me/swipl-devel.git

See How to submit a patch for details.

See also the discussion at Being friendly to quick contributions

Building

See CMAKE.md and Build SWI-Prolog from source

Web home

Please find the up-to-date information on SWI-Prolog at https://www.swi-prolog.org.

SWI-Prolog tools

You can use SWI-Prolog simply at the console of your favourite OS with any editor to manage the source code. For a better experience, there are several options:

  • Comprehensive builds include XPCE, SWI-Prolog's native GUI toolkit. This provides the swipl-win executable that opens a Prolog terminal. Additional tools include PceEmacs, an Emacs clone with a rich Prolog mode, a source level debugger, profiling tools and much more. XPCE is included in the default binaries for Windows, MacOS and for Linux as flatpak.
  • Some editors come with a rich mode for (SWI-)Prolog. Notably GNU-Emacs provides sweep
  • Use one of the online versions described below

Trying SWI-Prolog online

An online version of SWI-Prolog is provided by SWISH. Note that this version is subject to sandbox restrictions and does not provide the features most valued in SWI-Prolog such as its rich set of interfaces, multi-threading, modules, etc.

Alternatively, there is a WASM (Web Assembly) version available as SWI-Tinker. This version has no sandbox restrictions. The WASM build allows interaction with the browser's DOM, which allows you to build interactive Prolog applications running inside the browser. See also our NPM package.

Forum/mailing list

Our forum is hosted at a Discourse site. The forum provides a mail list interface.

Documentation

Documentation is available from several locations and in several formats.

  • Several tutorials can be accessed from the Tutorials menu on the home page

  • A HTML version of the documentation is in the doc/Manual directory of the installation. Note that some packagers put this documentation elsewhere or require it to be installed separately.

    These docs can be searched using ?- apropos("query").. Help on a predicate can be disaplayed using e.g., ?- help(append/3).

  • A PDF version of the documentation is available from the download page

You can also install the website locally to use its complete functionality if you are offline. It is available at https://github.com/SWI-Prolog/plweb.

About

SWI-Prolog Main development repository

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 102