arrival
2021-12-09
Classical planning plan validator written in modern Common Lisp
1ArriVAL - 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.
1.1Installation
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
1.2Usage
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 informationis written to the standard output.
- -v | -vv | -vvv | --verbose N
- verbosity, from level 1 to 3. Default is 0.
1.3Dependencies
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
1.4Author
Masataro Asai (guicho2.71828@gmail.com)
1.5Copyright
Copyright (c) 2019 Masataro Asai (guicho2.71828@gmail.com)
2License
Licensed under the LLGPL License.