GOLOG David Mui EEL6938
Download
Report
Transcript GOLOG David Mui EEL6938
GOLOG
David Mui
EEL6938
Outline
Introduction
Situational Calculus
GOLOG
Personal Banking Assistant Using GOLOG
ConGOLOG – GOLOG variant
Conclusion
Introduction
Computers System
Embedded in complex environments
Software for such systems does not maintain explicit
model of the world
Designers/Programmers
Users and designers of the system have a general mental
model of the environment
Problematic because they need to reconstruct the
model
Difficult to extend because of high level abstraction
Solution: GOLOG
GOLOG
What is GOLOG?
An Extension of situational calculus
Logic Programming Language for Dynamic Domains
Maintains explicit model of environment domain
Can be queried, reasoned at runtime
Based on theory of actions and preconditions
First,Second order logic
Applications of GOLOG?
Robotics
Artificial Intelligence
Mechanical Devices
Modeling and Simulation
Situational Calculus
Logic Formalism designed for representing dynamic
domains
First Order/Second Order logic formulae
Actions performed in the world
Fluent describe the world state
Situations
Can be thought of as properties of the world
Finite sequence of actions
Changes to the environment result in Actions.
Actions can be parametrized
Sequence of actions is described as a situation
S0 defined as initial situation constant (no action or
situation)
Situational Calculus Cont.
Binary function do:
do(a,s), denotes successor situation based on “a”
(action) on “s” (situation), (i.e. the new situation)
Example:
pickup(A ,S0)
do(putdown(A) ,do(walk(L), do(pickup(A) ,S0)))
Situational Calculus Cont.
Properties of the environment or world can be
seen as fluents
Relational Fluents
Truth values that may change
is_carrying(robot, item, s)
Functional Fluents
Functions that take the situation as their final
argument
Returns a situation dependent value
loc(robot, s)
Creating Axioms from Actions
Actions and effects of the actions are axiomatized
Actions have preconditions.
World Dynamics are specified by effect axioms
Frame Problem
To define a dynamic world it requires more than
just action preconditions and effect axioms
Frame Axioms
Defines action invariants of the domain
Could be a vast number of frame axiom in a domain
Fluents unaffected by the action
Example:
If robot picks up an object location does not change.
Solution to the Frame Problem
Generate Successor state Axiom
Collect all effect axioms from fluent and make a
completeness assumption
Assume it specifies all possibilities the fluent may
change
Transform effect axioms to generate successor state
axiom of given fluent
Situational Calculus, Cont.
A domain is defined by the following theory:
Axioms defining the world in different situations
Action preconditions
Successor state axioms
Foundational axioms
Complex Actions in GOLOG
Situational Calculus methods described in
previous slides can not handle complex actions
and reasoning
Procedures
Loops
Nondeterministic actions
Need to define complex actions with additional
symbols
Complex Actions, cont.
Define Complex Actions using extralogical symbols
(e.g., while, if, etc.)
Extralogical expressions are macros that expand into formulas
Do(δ, s, s`) is the basic abbreviation in the GOLOG language,
where δ is a complex action expression, for complex
operations
Do(δ, s, s`) means that executing δ (complex action) in
situation “s” has s` as a terminating situation
Complex Actions, cont.
1.Primitive Actions
2. Test Actions
3. Sequence
Complex Actions, cont.
4. Nondeterministic choice of two actions
5. Nondeterministic choice of two arguments
6. Nondeterministic Iterations
Complex Actions, cont.
Conditional and loops definition in GOLOG
Procedures difficult to define in GOLOG
No easy way of macro expansion on recursive
procedure calls to itself
Complex Actions, cont.
Create auxiliary macro definition: For any
predicate symbol P of arity n+2 taking a pair of
situation arguments
Define a semantic for procedures utilizing
recursive calls
GOLOG in a Nutshell
GOLOG programs are executed uses a theorem prover
User supplies, axioms, successor state axioms, initial situation
condition of domain, and GOLOG program describing agent
behaviour
Execution of program gives:
Example GOLOG
Elevator Controller Example
Primitive Actions
Up(n): move the elevator to a floor n
Down(n): move the elevator down to a floor n
Turnoff: turn off call button n
Open: open elevator door
Close: close the elevator door
Fluents
CurrentFloor(s) = n, in situation s, the elevator is at
floor n
On(n,s), in situation s call button n is on
NextFloor(n,s) = in situation s the next floor (n)
Example, cont.
Primitive Action Preconditions
Successor State Axiom
Example, cont.
One of the possible fluents
Elevator GOLOG Procedures
Example, cont.
Theorem proving task
Successful Execution of GOLOG program
Returns the following to elevator hardware control
system
Personal Banking Assistant Using
GOLOG
Personal Banking Assistant (PBA)
Assists users in personal banking over computer
networks
Perform transactions based on certain actions,
preconditions, and situations
Collection of GOLOG agents that interact
Over 2000 lines of GOLOG Code
Currently implemented in simulated financial
environment
System Components
Personal Banking Assistant Agents
Bank Agents
Conducts fund transfers between different bank
institutions
Router Agents
Perform backend bank operations on accounts
Transfer Facilitator Agents
User interface, performs actions directed by user, and
monitors for certain situations
Performs network operations/maintenance
Automated Teller Agents
Provides ATM interface to bank agents
System Diagram
PBA Fluents
Fluents used by the PBA to model the world:
USERACCOUNT(type, bank, account, balance,
lastUpdate, rateOfReturn, moveFunds, minBalance,
penalty, refreshRate, s)
Monitor(type, bank, account, limit, lowerOrHigher,
priority, response, monID, s)
ALERT(alertMessage, maxPriority, monID, s)
ALERTACKNOLWEDGED(monID,s)
WAITINGUPDATE(bank, account, s)
PBA Primitive Actions
SENDMESSAGE(method, recipient, message)
STARTWAITINGUPDT(bank, account)
STOPWAITINGUPDT(bank,account)
CREATEALERT(message, maxPriority, monID)
SENDALERT(priority, message, medium, monID)
PBA, cont.
ControlPBA
Requests balance updates for accounts
Process messages
Send out alert messages to users
PBA, cont.
RefreshMonitoredAccts
Request balance updates for accounts
Process new messages
Send out new messages to users
PBA, cont.
HandleCommunications Procedure
Main message handling loop
Reads message from port and dispatches to appropriate
action
GenerateAlerts Procedure
Directs agent to monitor triggers defined by user
Alerts the user
PBA Results
Pros:
GOLOG capable of building useful applications
Provides structure for the programmer
Preconditions, successor state axioms
Encourages a layered design
Cons:
Certain operations are tricky to accomplish
Performing arithmetic
Assigning a value to a variable
Limited debugging tools
Lack of standard libraries
Lack of event driven reactive behaviors
ConGOLOG
ConGOLOG
Extended version of GOLOG that incorporates
concurrency
Concurrent processes with different priorities
High level interrupts
Arbitrary actions
ConGolog differs from other formal models of concurrency
Allows incomplete information about the environment
Allows primitive actions to affect the environment in a complex
way and such changes to the environment can affect the
execution of the remainder of the program
New Semantic for Concurrency
ConGOLOG adopts a transition semantic
Trans Predicate
Defines a transition relation between two processes
Final Predicate
Final process
Determines when process is completed
Trans Axioms
1. Empty Program
2. Primitive Action
3. Wait/Test Actions
New Concurrency Constructs
Constructs to handle concurrent programming in
ConGOLOG
Other GOLOG Variants
CcGOLOG
GOLEX
Incorporates continous change and event driven
behavior
Execution and monitoring system, distributed control
software
Autonomous mobile robots, sensing and interaction
IndiGOLOG
Incremental Interpreter for high level programs
involving nondeterminisim and sensing actions
Conclusion
Logic programming for dynamic domains such as
robotics, intelligent software agents, and modeling
and simulations
GOLOG is based on situational calculus, utilizing
first/second order logic and formal theory of
actions
Variants (ccGOLOG, ConGOLOG…etc.)
To solve weakness such as concurrency, event driven,
sensing
References
Hector J. Levesque, Raymond Reiter, Yves
Lesperance, Fngzhen Lin, and Richard B. Scherl.
GOLOG: A logic programming language for
dynamic domains. To appear in the Journal of
Logic Programming, special issue on Reasoning
about Action and Change, 1996.
Yves Lesperance, Hector J. Levesque, and Shane J.
Ruman. An Experiment in Using GOLOG to Build
a Personal Banking Assistant. To Appear in
Intelligent Agent Systems: Theoretical and
Practical Issues, 1997.
References, cont.
Giuseppe De Giacomo, Yves Lespérance, and
Hector Levesque. ConGolog, a concurrent
programming language based on the situation
calculus. Artificial Intelligence, 121(1-2):109-169,
2000.
Yves Lespérance, Todd G. Kelly, John
Mylopoulos, and Eric S.K. Yu. Modeling dynamic
domains with ConGolog. In Proceedings of
CAiSE-99, Heidelberg, Germany, June 1999.