Skip to content
Victor Mataré edited this page Mar 18, 2023 · 43 revisions

golog++ is a safe and accessible agent programming framework and language.

A golog++ program combines an action model with the ability to interleave planning and scripting. It is comprised of a Basic Action Theory (BAT) and a (potentially nondeterministic) imperative program. The BAT describes the world in terms of fluents, and how the agent can affect it in terms of actions and their effects. The program as a whole is declarative because the only side effects are the effects of actions on the world as described by the BAT.

In addition, golog++ is strictly typesafe. Type consistency is enforced throughout both the BAT and the imperative code.

The main program is conventionally a procedure called main().

procedure main() {
    while (incoming_order())
        serve_coffee();
}

serve_coffee() could be another procedure or an action call.

Setup

Basic installation

echo 'export READYLOG_PL=~/readylog/interpreter' >> ~/.bashrc
source ~/.bashrc
  • In the golog++ root folder (e.g. ~/gologpp):
mkdir build && cd build && cmake ..
  • Check the cmake output for errors, check in particular that eclipse-clp and ReadyLog have been found
  • Compile (CAUTION: The parser build uses up to 2GB of RAM per object file, so on a 16-threaded system the parallel build may use up to 32 GB of RAM):
cmake --build .
# or in parallel:
make -j$(nproc) -l$(nproc)
  • Run tests: ctest

Installing platform modeling support

  • Install libutap
  • Install UPPAAL (e.g. to ~/uppaal64)
  • Tell golog++ where to look for the verifyta binary:
echo 'export VERIFYTA_DIR=~/uppaal64/bin-Linux' >> ~/.bashrc
source ~/.bashrc`
  • Go to the golog++ build folder (e.g. cd ~/gologpp/build)
  • Enable taptenc semantics:
cmake -DBUILD_TAPTENC_SEMANTICS=ON ..
# or interactively:
ccmake ..
  • Compile:
cmake --build .
# or in parallel:
make -j$(nproc) -l$(nproc)
  • Run tests: ctest
Clone this wiki locally