[![CI](https://github.com/SWI-Prolog/swipl-devel/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/SWI-Prolog/swipl-devel/actions/workflows/ci.yml) # 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. A prototype running in your browser based on WASM (Web Assembly) is available. (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.](https://swi-prolog.com/). ## Forking, cloning and submitting patches This repository uses many [Git submodules](https://git-scm.com/book/en/v2/Git-Tools-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 https://github.com/SWI-Prolog/swipl-devel.git cd swipl-devel git submodule update --init git remote add myfork git@github.com:me/swipl-devel.git See [How to submit a patch](https://www.swi-prolog.org/howto/SubmitPatch.html) for details. See also the discussion at [Being friendly to quick contributions](https://swi-prolog.discourse.group/t/being-friendly-to-quick-contributions/493/6) ## Building See [CMAKE.md](https://github.com/SWI-Prolog/swipl-devel/blob/master/CMAKE.md) and [Build SWI-Prolog from source](https://www.swi-prolog.org/build/) ## Web home Please find the up-to-date information on SWI-Prolog at https://www.swi-prolog.org. ## Trying SWI-Prolog online An online version of SWI-Prolog is provided by [SWISH](https://swish.swi-prolog.org). 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 at http://dev.swi-prolog.org/wasm/shell. This version has no sandbox restrictions. The WASM build allows interaction with the browser's DOM, so it allows for interactive Prolog applications running _inside_ the browser. It is otherwise rather limited though. ## Forum/mailing list Our forum is hosted at a [Discourse site](https://swi-prolog.discourse.group/). 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](https://www.swi-prolog.org) - 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](https://www.swi-prolog.org/download/devel) 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.