arrival

2019-05-21

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:

detail
STRIPS and
negative precondition not
disjunctive precondition or imply
universal precondition forall
existential preondition exists
conditional effects when
The forall in effects supported
ADL supports forall exists when or imply
Axioms supported, fixpoint calculation
types supported except either
equality (=) supported
duplicate args in actions/axioms supported, imply equality constaints
fluents supported (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.

Installation

Step 1. Install Roswell (https://roswell.github.io/) (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 https://github.com/roswell/roswell.git
cd roswell
sh bootstrap
./configure --prefix=$HOME/.local
make
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                 
Got ARGV: NIL
            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

Usage

arrival [-v|-vv|-vvv|--verbose N] DOMAINFILE PROBLEMFILE PLANFILE [TRACEFILE]
PLANFILE
a SEXP file containing plan traces as action signatures.
PROBLEMFILE
a PDDL problem file.
DOMAINFILE
a PDDL domain file.
TRACEFILE
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.

Dependencies

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 <nikodemus@sb-studio.net>, and others. : Alexandria is a collection of portable public domain utilities.
  • iterate by ** : Jonathan Amsterdam's iterator/gatherer/accumulator facility

Author

Masataro Asai (guicho2.71828@gmail.com)

Copyright

Copyright (c) 2019 Masataro Asai (guicho2.71828@gmail.com)

License

Licensed under the LLGPL License.

Author
Masataro Asai
License
LLGPL