Skip to content
SHOP3 Git repository
Common Lisp C++ Yacc Makefile Shell Lex
Branch: master
Clone or download
Robert P. Goldman
Robert P. Goldman Clarifying comment.
Plan repair does some odd things with the tags (integers) in the SHOP3
world states.  They were originally just integers in order, but in
order to do the plan repair, I needed to be able to inject a new
state (for the divergences) into the middle of a sequence.  So now
they are sequences of *even* integers by default, and the extra one I
add for plan divergences is an odd-numbered one between two previously
consecutive states.
Latest commit 7711ddf Sep 12, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
jenkins Check for VAL when running tests. Jun 17, 2019
.gitignore Replace old manual with new one. Mar 31, 2019
.gitmodules Add VAL external Jun 17, 2019 Update the README. Jun 17, 2019

SHOP3 logo


This repository contains the open source version of the SHOP3 planner.


Mozilla Public License

Installation Instructions

Common Lisp

SHOP3 is written in Common Lisp (CL), and requires a CL implementation to run. We recommend one of the following implementations:

  • SBCL: Steel Bank Common Lisp. Available in packages on Ubuntu Linux and Mac Homebrew. Also available from

  • CCL: Clozure Common Lisp. Available from

  • ACL: Allegro Common Lisp: Available from Unlike the previous two implementations, this is a commercial software product.

We regularly test SHOP3 on all three of these lisp implementations, using an exhaustive test suite. There are at least a handful of other CL implementations, both open source and commercial, but we have not tested them with SHOP3. Patches to make SHOP3 work with other implementations are welcomed, but we have no plans to add support to any others ourselves.

Obtaining the code

Clone this repository and then initialize and populate the submodules (see git documentation). You need to do this, at least for the moment, because some of the required libraries are not in Quicklisp.

Once you have done that, you can get SHOP3 started either using Quicklisp (probably easiest) or by configuring ASDF (the Common Lisp build manager) yourself. See below.

Option 1: Quicklisp

Probably the easiest way to work with SHOP3 will be to use it in conjunction with Quicklisp. Quicklisp is a package manager for CL libraries, and will be the easiest way to get the libraries that SHOP3 depends on.

If you wish to use Quicklisp, follow the installation instructions for quicklisp at the above site, and then clone the SHOP3 repository into the local-projects subdirectory of your Quicklisp install directory. Once this is done, you should be able to:

  1. Start CL
  2. Inside CL, enable Quicklisp
  3. Enter (ql:quickload "shop3") into the CL REPL.

Option 2: Without Quicklisp

The SHOP3 repository has links to all of the libraries it requires in its git submodules. If Quicklisp is not the right approach for you, you may use git commands to populate SHOP3's submodules, and then:

  1. Start CL

  2. Load the ASDF CL build system by doing (require :asdf) in the CL REPL.

  3. Tell ASDF where to find SHOP3:

         '(:source-registry (:tree SHOP3-DIRECTORY) :inherit-configuration)

Fill in the name of the directory of your cloned repository for SHOP3-DIRECTORY.

  1. (asdf:load-system "shop3")

Once started

We suggest that you interact with SHOP3 through the shop-user package in the REPL.

The best environment for working with CL for any purpose, including SHOP3 planning, is through the Superior Lisp Interaction Mode for Emacs, or SLIME. If you use ACL, Franz have their own Emacs Lisp Interface (ELI) as a possible alternative. Both ACL and CCL have some sort of GUI, as well.

Using SHOP3

See the user manual in the docs directory of the repository. Building the manual requires having texinfo, and SBCL installed, and benefits from having tex/latex installed. To build, change to the docs directory and do make html if you have only makeinfo installed, or just make if you have tex/latex, as well. This will produce the manual in HTML, Emacs info, and PDF formats.

You can’t perform that action at this time.