Skip to content
Victor Mataré edited this page May 22, 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. World state that is beyond the agent's control is described by Exogenous Actions and Exogenous Functions.

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