Skip to content

Yet Another Classical planning plan validator written in modern Common Lisp

Notifications You must be signed in to change notification settings

guicho271828/ArriVAL

Repository files navigation

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
STRIPSand
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.

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.

arrival.svg

About

Yet Another Classical planning plan validator written in modern Common Lisp

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published