GOLOG

Last updated
GOLOG
Paradigm logic programming
First appeared1994;29 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]

Contents

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.

Related Research Articles

Logic programming is a programming, database and knowledge-representation and reasoning paradigm which is based on formal logic. A program, database or knowledge base in a logic programming language is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic programming language families include Prolog, Answer Set Programming (ASP) and Datalog. In all of these languages, rules are written in the form of clauses:

Prolog is a logic programming language associated with artificial intelligence and computational linguistics.

Constraint programming (CP) is a paradigm for solving combinatorial problems that draws on a wide range of techniques from artificial intelligence, computer science, and operations research. In constraint programming, users declaratively state the constraints on the feasible solutions for a set of decision variables. Constraints differ from the common primitives of imperative programming languages in that they do not specify a step or sequence of steps to execute, but rather the properties of a solution to be found. In addition to constraints, users also need to specify a method to solve these constraints. This typically draws upon standard methods like chronological backtracking and constraint propagation, but may use customized code like a problem-specific branching heuristic.

In computer science, declarative programming is a programming paradigm—a style of building the structure and elements of computer programs—that expresses the logic of a computation without describing its control flow.

<span class="mw-page-title-main">Symbolic artificial intelligence</span> Methods in artificial intelligence research

In artificial intelligence, symbolic artificial intelligence is the term for the collection of all methods in artificial intelligence research that are based on high-level symbolic (human-readable) representations of problems, logic and search. Symbolic AI used tools such as logic programming, production rules, semantic nets and frames, and it developed applications such as knowledge-based systems, symbolic mathematics, automated theorem provers, ontologies, the semantic web, and automated planning and scheduling systems. The Symbolic AI paradigm led to seminal ideas in search, symbolic programming languages, agents, multi-agent systems, the semantic web, and the strengths and limitations of formal knowledge and reasoning systems.

Calculus in its most general sense is any method or system of calculation.

<span class="mw-page-title-main">Automated planning and scheduling</span> Branch of artificial intelligence

Automated planning and scheduling, sometimes denoted as simply AI planning, is a branch of artificial intelligence that concerns the realization of strategies or action sequences, typically for execution by intelligent agents, autonomous robots and unmanned vehicles. Unlike classical control and classification problems, the solutions are complex and must be discovered and optimized in multidimensional space. Planning is also related to decision theory.

<span class="mw-page-title-main">Robert Kowalski</span> British computer scientist (born 1941)

Robert Anthony Kowalski is an American-British logician and computer scientist, whose research is concerned with developing both human-oriented models of computing and computational models of human thinking. He has spent most of his career in the United Kingdom.

The belief–desire–intention software model (BDI) is a software model developed for programming intelligent agents. Superficially characterized by the implementation of an agent's beliefs, desires and intentions, it actually uses these concepts to solve a particular problem in agent programming. In essence, it provides a mechanism for separating the activity of selecting a plan from the execution of currently active plans. Consequently, BDI agents are able to balance the time spent on deliberating about plans and executing those plans. A third activity, creating the plans in the first place (planning), is not within the scope of the model, and is left to the system designer and programmer.

The situation calculus is a logic formalism designed for representing and reasoning about dynamical domains. It was first introduced by John McCarthy in 1963. The main version of the situational calculus that is presented in this article is based on that introduced by Ray Reiter in 1991. It is followed by sections about McCarthy's 1986 version and a logic programming formulation.

ECLiPSe is a software system for the development and deployment of constraint logic programming applications, e.g., in the areas of optimization, planning, scheduling, resource allocation, timetabling, transport, etc. It is also suited for teaching most aspects of combinatorial problem solving, e.g., problem modeling, constraint programming, mathematical programming, and search techniques. It contains constraint solver libraries, a high-level modeling and control language, interfaces to third-party solvers, an integrated development environment and interfaces for embedding into host environments.

In artificial intelligence, model-based reasoning refers to an inference method used in expert systems based on a model of the physical world. With this approach, the main focus of application development is developing the model. Then at run time, an "engine" combines this model knowledge with observed data to derive conclusions such as a diagnosis or a prediction.

An Abstract Agent Programming Language or Artificial Autonomous Agents Programming Language or 3APL is an experimental tool and programming language for the development, implementation and testing of multiple cognitive agents using the Belief-Desire-Intention (BDI) approach.

In artificial intelligence, a procedural reasoning system (PRS) is a framework for constructing real-time reasoning systems that can perform complex tasks in dynamic environments. It is based on the notion of a rational agent or intelligent agent using the belief–desire–intention software model.

<span class="mw-page-title-main">Carl Hewitt</span> American computer scientist; Planner programming languagedesigner (1944-2022)

Carl Eddie Hewitt was an American computer scientist who designed the Planner programming language for automated planning and the actor model of concurrent computation, which have been influential in the development of logic, functional and object-oriented programming. Planner was the first programming language based on procedural plans invoked using pattern-directed invocation from assertions and goals. The actor model influenced the development of the Scheme programming language, the π-calculus, and served as an inspiration for several other programming languages.

AgentSpeak is an agent-oriented programming language. It is based on logic programming and the belief–desire–intention software model (BDI) architecture for (cognitive) autonomous agents. The language was originally called AgentSpeak(L), but became more popular as AgentSpeak, a term that is also used to refer to the variants of the original language.

In computer science, an action language is a language for specifying state transition systems, and is commonly used to create formal models of the effects of actions on the world. Action languages are commonly used in the artificial intelligence and robotics domains, where they describe how actions affect the states of systems over time, and may be used for automated planning.

<span class="mw-page-title-main">Action model learning</span>

Action model learning is an area of machine learning concerned with creation and modification of software agent's knowledge about effects and preconditions of the actions that can be executed within its environment. This knowledge is usually represented in logic-based action description language and used as the input for automated planners.

<span class="mw-page-title-main">Glossary of artificial intelligence</span> List of definitions of terms and concepts commonly used in the study of artificial intelligence

This glossary of artificial intelligence is a list of definitions of terms and concepts relevant to the study of artificial intelligence, its sub-disciplines, and related fields. Related glossaries include Glossary of computer science, Glossary of robotics, and Glossary of machine vision.

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" (PDF). GOLOG: A Logic Programming Language for Dynamic Domains.
  3. Marta Cialdea Mayer (2010). Il Calcolo delle Situazioni e il linguaggio Golog (PDF) (in Italian).
  4. "GOLOG - Mathematical software - swMATH". swmath.org. Retrieved 2020-01-12.
  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" (PDF). The Golog Programming Language and Agency.
  8. Sardina, Sebastian; Lespérance, Yves (2009-05-10). "Golog Speaks the BDI Language" (PDF). Programming Multi-Agent Systems. pp. 82–99. doi:10.1007/978-3-642-14843-9_6. ISBN   978-3-642-14842-2.{{cite book}}: |journal= ignored (help)
  9. Hofmann, Till and Niemueller, Tim and Cla\ssen, Jens and Lakemeyer, Gerhard (2016). Continual planning in Golog. Thirtieth AAAI conference on artificial intelligence.{{cite conference}}: CS1 maint: multiple names: authors list (link)
  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.{{cite conference}}: CS1 maint: multiple names: authors list (link)
  11. Ferrein, Alexander and Fritz, Christian and Lakemeyer, Gerhard (2005). "Using Golog for Deliberation and Team Coordination in Robotic Soccer". KI. 19 (1): 24.{{cite journal}}: CS1 maint: multiple names: authors list (link)
  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.