GOLOG is a high-level logic programming language designed for the specification and execution of complex actions in dynamical domains. It is grounded in the situation calculus, a first-order logical formalism for reasoning about action and change. Developed at the University of Toronto, GOLOG allows an interpreter to maintain a direct characterization of the modeled world, enabling applications to reason about preconditions, effects, and potential action sequences before committing to a specific course of action.
Unlike conventional procedural languages such as C, which execute statements in a predetermined linear order, GOLOG operates on an abstract model. The source code defines the problem and the interpreter generates the sequence of actions, making it a fifth-generation programming language. This approach is particularly suited to complex domains like robotics, where the solver must dynamically determine the next action based on the current state.
Historical Background
The situation calculus, the foundational formalism for GOLOG, was first proposed by AI pioneer John McCarthy in 1963. This logical framework provided a way to represent dynamic worlds, actions, and their effects, laying the groundwork for later programming languages that could reason about action and change. GOLOG emerged from this tradition, integrating situation calculus into a practical programming paradigm.
Language Description
A GOLOG interpreter automatically maintains a direct characterization of the dynamic world being modeled, based on user-supplied axioms about preconditions, effects of actions, and the initial state. This allows the application to reason about the world's condition and consider the impacts of different potential actions before focusing on a specific one. The language defines a state space in which an agent is allowed to operate, and a path is found through state space search. To speed up this process, GOLOG programs are often realized as hierarchical task networks.
GOLOG is a logic programming language, distinct from conventional programming languages. In a procedural language like C, the programmer creates a subroutine with statements that the computer executes linearly. In contrast, GOLOG works with an abstract model, and the interpreter generates the action sequence. The source code defines the problem, and it is up to the solver to find the next action, facilitating the management of complex problems from robotics and other domains.
Extensions and Dialects
Beyond the original GOLOG, several extensions have been developed. ConGOLOG provides concurrency and interrupts, allowing for more complex agent behaviors. Other dialects like IndiGOLOG and Readylog were created for real-time applications where sensor readings are updated on the fly. These extensions expand GOLOG's applicability to dynamic, interactive environments.
Applications
GOLOG has been used to model the behavior of autonomous agents, combining a logic-based action formalism for describing the environment with constructs for building complex actions using typical programming language features. It is applied in high-level control of robots and industrial processes, virtual agents, and discrete event simulation. Additionally, GOLOG can be used to develop Belief-Desire-Intention (BDI)-style agent systems, which are common in multi-agent systems and cognitive robotics.
Planning and Scripting
In contrast to the Planning Domain Definition Language (PDDL), GOLOG supports both planning and scripting. Planning involves defining a goal state in the world model, and the solver brings the logical system into that state. Behavior scripting implements reactive procedures that run as a computer program. For example, in story authoring, the user defines what should be true at the end of the plot. A solver applies possible actions to the current situation until the goal state is reached, with the specification of the goal state and possible actions realized in the logical world model. Alternatively, a hardwired reactive behavior doesn't need a solver; the action sequence is provided in a scripting language, and the GOLOG interpreter, written in Prolog, executes the script to bring the story into the goal state.
See Also
- situation-calculus (not in list, but relevant)
- logic-programming (not in list, but relevant)
- Autonomous Agents (not in list, but relevant)
- Robotics (not in list, but relevant)