Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/SWI-Prolog/swipl-devel

SWI-Prolog Main development repository
https://github.com/SWI-Prolog/swipl-devel

logic-programming prolog swi-prolog

Last synced: about 1 month ago
JSON representation

SWI-Prolog Main development repository

Awesome Lists containing this project

README

        

[![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 [email protected]: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
https://wasm.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.