Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/guicho271828/arrival

Yet Another Classical planning plan validator written in modern Common Lisp
https://github.com/guicho271828/arrival

Last synced: 29 days ago
JSON representation

Yet Another Classical planning plan validator written in modern Common Lisp

Awesome Lists containing this project

README

        

* 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 [[https://github.com/patrikhaslum/INVAL][INVAL]] validator.

Unlike [[https://github.com/patrikhaslum/INVAL][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 + [[https://docs.brew.sh/Homebrew-on-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

#+begin_src
$ ~/.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
#+end_src

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

** Author

Masataro Asai ([email protected])

** Copyright

Copyright (c) 2019 Masataro Asai ([email protected])

* License

Licensed under the LLGPL License.

[[arrival.svg]]