-
Notifications
You must be signed in to change notification settings - Fork 2
Home
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 fluent, and how the agent can affect it in terms of action 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, so any definitions of domains, compound types or list types apply to 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.
- 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 parallelmake -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
- 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 withccmake ..
- Compile:
cmake --build .
or in parallelmake -j$(nproc) -l$(nproc)
. - Run tests:
ctest