GOLOG

From HandWiki
Short description: High-level logic programming language
GOLOG
Paradigmlogic programming
First appeared1994; 30 years ago (1994)
Filename extensions.pl
Major implementations
golog.lua, IndiGolog
Influenced by
Prolog

GOLOG is a high-level logic programming language for the specification and execution of complex actions in dynamical domains. It is based on the situation calculus. It is a first-order logical language for reasoning about action and change. GOLOG was developed at the University of Toronto.[1][2]

History

The concept of situation calculus on which the GOLOG programming language is based was first proposed by John McCarthy in 1963.[3]

Language

A GOLOG interpreter automatically maintains a direct characterization of the dynamic world being modeled, on the basis of user supplied axioms about preconditions, effects of actions and the initial state of the world. This allows the application to reason about the condition of the world and consider the impacts of different potential actions before focusing on a specific action.[4]

Golog is a logic programming language and is very different from conventional programming languages. A procedural programming language like C defines the execution of statements in advance. The programmer creates a subroutine which consists of statements, and the computer executes each statement in a linear order. In contrast, fifth-generation programming languages like Golog are working with an abstract model with which the interpreter can generate the sequence of actions. The source code defines the problem and it is up to the solver to find the next action. This approach can facilitate the management of complex problems from the domain of robotics.

A Golog program defines the state space in which the agent is allowed to operate. A path in the symbolic domain is found with state space search. To speed up the process, Golog programs are realized as hierarchical task networks.[5]

Apart from the original Golog language, there are some extensions available. The ConGolog language provides concurrency and interrupts. Other dialects like IndiGolog and Readylog were created for real time applications in which sensor readings are updated on the fly.[6]

Uses

Golog has been used to model the behavior of autonomous agents. In addition to a logic-based action formalism for describing the environment and the effects of basic actions, they enable the construction of complex actions using typical programming language constructs.

It is also used for applications in high level control of robots and industrial processes, virtual agents, discrete event simulation etc.[7] It can be also used to develop BDI (Belief Desire Intention)-style agent systems.[8]

Planning and scripting

In contrast to the Planning Domain Definition Language, Golog supports planning and scripting as well.[9][10] Planning means that a goal state in the world model is defined, and the solver brings a logical system into this state. Behavior scripting implements reactive procedures, which are running as a computer program.[11]

For example, suppose the idea is to authoring a story. The user defines what should be true at the end of the plot. A solver gets started and applies possible actions to the current situation until the goal state is reached. The specification of a goal state and the possible actions are realized in the logical world model.[12]

In contrast, a hardwired reactive behavior doesn't need a solver but the action sequence is provided in a scripting language.[13] The Golog interpreter, which is written in Prolog,[14] executes the script and this will bring the story into the goal state.

References

  1. Levesque, Hector J.; Reiter, Raymond; Lespérance, Yves; Lin, Fangzhen; Scherl, Richard B. (1997-04-01). "GOLOG: A logic programming language for dynamic domains". The Journal of Logic Programming. Reasoning about Action and Change 31 (1): 59–83. doi:10.1016/S0743-1066(96)00121-5. ISSN 0743-1066. 
  2. "GOLOG: A logic programming language for dynamic domains". GOLOG: A Logic Programming Language for Dynamic Domains. http://www.cs.toronto.edu/cogrobo/Papers/GOLOGlang.pdf. 
  3. Marta Cialdea Mayer (2010) (in it). Il Calcolo delle Situazioni e il linguaggio Golog. http://cialdea.inf.uniroma3.it/teaching/logica/materiale/dispense-golog.pdf. 
  4. "GOLOG - Mathematical software - swMATH". https://swmath.org/software/2159. 
  5. Gabaldon, Alfredo (2002). "Programming hierarchical task networks in the situation calculus". AIPS'02 Workshop on On-line Planning and Scheduling. 
  6. Classen, Jens (2013). Planning and verification in the agent language Golog (PhD). Hochschulbibliothek der Rheinisch-Westfalischen Technischen Hochschule Aachen.
  7. G'omez, Sergio Alejandro. "The Golog Programming Language and Agency". The Golog Programming Language and Agency. http://sedici.unlp.edu.ar/bitstream/handle/10915/21467/Documento_completo.pdf?sequence=1&isAllowed=y. 
  8. Sardina, Sebastian; Lespérance, Yves (2009-05-10). "Golog Speaks the BDI Language". Programming Multi-Agent Systems. Lecture Notes in Computer Science. 5919. 82–99. doi:10.1007/978-3-642-14843-9_6. ISBN 978-3-642-14842-2. http://www.cse.yorku.ca/~lesperan/papers/PROMAS09.pdf. 
  9. Hofmann, Till and Niemueller, Tim and Cla\ssen, Jens and Lakemeyer, Gerhard (2016). "Continual planning in Golog". Thirtieth AAAI conference on artificial intelligence. 
  10. Dylla, Frank and Ferrein, Alexander and Lakemeyer, Gerhard (2002). "Acting and deliberating using golog in robotic soccer--a hybrid architecture". Proc. CogRob02, AAAI Press. 
  11. Ferrein, Alexander and Fritz, Christian and Lakemeyer, Gerhard (2005). "Using Golog for Deliberation and Team Coordination in Robotic Soccer". KI 19 (1): 24. 
  12. Gudhmundsson, Tryggvi Thor (2017). Flexible authoring using GOLOG planning in interactive storytelling (PhD). Reykjavík University Iceland.
  13. Yves Lesperance and Kenneth Tam and Michael Jenkin (2000). "Reactivity in a Logic-Based Robot Programming Framework". Intelligent Agents VI. Agent Theories, Architectures, and Languages. Springer Berlin Heidelberg. pp. 173–187. doi:10.1007/10719619_13. 
  14. Ferrein, Alexander (2010). "golog. lua: Towards a non-prolog implementation of GOLOG for embedded systems". 2010 AAAI Spring Symposium Series.