Skip to content
Yet Another Classical planning plan validator written in modern Common Lisp
Branch: master
Clone or download
Latest commit a00ec15 Apr 26, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
roswell Initial commit Mar 24, 2019
src optimization: avoid intermediate list Apr 3, 2019
tests tests Mar 24, 2019
.gitignore Initial commit Mar 24, 2019
.travis.yml [ci skip] README Apr 26, 2019
alien.svg arrival.svg Mar 24, 2019
arrival.asd Initial commit Mar 24, 2019
arrival.svg fancy banner Mar 24, 2019
asd-generator-data.asd Initial commit Mar 24, 2019
circle.yml tests Mar 24, 2019
earth.svg arrival.svg Mar 24, 2019

ArriVAL - Yet Another Classical planning plan validator written in modern Common Lisp

This is a library separated from ALIEN classical planner code base.

ARRIVAL provides a binary arrival that takes a PDDL problem file, a domain file and a plan file, returns 0 when the plan is correct and returns 1 otherwise.

The implementation is intensively focused on clarity: The total LOC is just 941. This is even shorter compared to INVAL validator.

Unlike INVAL, the repository follows the modern Common Lisp repository structure, is ASDF loadable, and is written in a clean functional style with pattern matching.

ArriVAL ignores the :requirement. The following features are supported:

negative preconditionnot
disjunctive preconditionor imply
universal preconditionforall
existential preonditionexists
conditional effectswhen
The forall in effectssupported
ADLsupports forall exists when or imply
Axiomssupported, fixpoint calculation
typessupported except either
equality (===)supported
duplicate args in actions/axiomssupported, imply equality constaints
fluentssupported (beta) (numeric, objects, action-cost)
e.g. assign, increase, decrease, scale-up, scale-down
It accepts both integers and floats.

Arrival currently has no plan to support scheduling problems.


Step 1. Install Roswell ( (modern lisp equivalent of pyenv)

On Mac + homebrew or Linux + linuxbrew,

brew install roswell

On Linux (without linuxbrew),

sudo apt-get -y install git build-essential automake libcurl4-openssl-dev
git clone -b release
cd roswell
sh bootstrap
./configure --prefix=$HOME/.local
make install
~/.local/bin/ros setup   # expect ~5min

Step 2. Install arrival

$ ~/.local/bin/ros install guicho271828/arrival
$ ~/.roswell/bin/arrival
Usage: [--notype] [-v[v[v]] | --verbose N] [-r|--relaxed] arrival domain problem planfile [trace-output]
     --notype    : The trace output will not contain the type predicates
-v | --verbose N : Specify the verbosity, from 0 to 3                   
-r | --relaxed   : Perform the relaxed planning instead                 
            dynamic space size: 8388608000
      lisp implementation type: SBCL
   lisp implementation version: 1.4.12
              machine instance: masataro-ThinkPad-T460
                  machine type: X86-64
               machine version: Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz
                 software type: Linux
              software version: 4.4.0-145-generic


a SEXP file containing plan traces as action signatures.
a PDDL problem file.
a PDDL domain file.
An optional output file. Unless specified, the same information is written to the standard output.
-v | -vv | -vvv | –verbose N
verbosity, from level 1 to 3. Default is 0.


This library is at least tested on implementation listed below:

  • SBCL 1.4.12 on X86-64 Linux 4.4.0-142-generic (author’s environment)

Also, it depends on the following libraries:

  • trivia by Masataro Asai : NON-optimized pattern matcher compatible with OPTIMA, with extensible optimizer interface and clean codebase
  • alexandria by Nikodemus Siivola <>, and others. : Alexandria is a collection of portable public domain utilities.
  • iterate by ** : Jonathan Amsterdam’s iterator/gatherer/accumulator facility


Masataro Asai (


Copyright (c) 2019 Masataro Asai (


Licensed under the LLGPL License.


You can’t perform that action at this time.