Skip to content
Victor Mataré edited this page Dec 12, 2020 · 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 in 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

  • Install ECLiPSe Prolog
  • Install ReadyLog (e.g. to ~/readylog)
  • Tell golog++ where to look for ReadyLog: echo 'export READYLOG_PL=~/readylog/interpreter' >> ~/.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: cmake --build . or in parallel make -j$(nproc) -l$(nproc). 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.
  • 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
  • Go to the golog++ build folder (e.g. cd ~/gologpp/build)
  • Enable taptenc semantics: cmake -DBUILD_TAPTENC_SEMANTICS=ON .. or interactively with ccmake ..
  • Compile: cmake --build . or in parallel make -j$(nproc) -l$(nproc).
  • Run tests: ctest
Clone this wiki locally