programming in spark - tu dresden · the spark system spark – stanford research institute...
TRANSCRIPT
![Page 1: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/1.jpg)
VIb. Reactive Action Programs 1
Programming in SPARK
![Page 2: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/2.jpg)
VIb. Reactive Action Programs 2
The SPARK System
SPARK – Stanford Research Institute Procedural Agent Realization Kit
Largescale, practical applications of reactive agent programs
BDImodel, PRSarchitecture (like AgentSpeak)
More expressive means to control agents in rich and dynamic domains
![Page 3: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/3.jpg)
VIb. Reactive Action Programs 3
SPARK Syntax
Belief literals :<=> belief atoms or their negation
Actions :<=> primitive actions or names for complex behaviors
Predefined belief atoms are:
Desire(a) where a action
Success(a) where a action
Fail(a) where a action
Desire() where belief literal
Success() where belief literal
Fail() where belief literal
![Page 4: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/4.jpg)
VIb. Reactive Action Programs 4
Triggers and Procedures
Triggers are of the form
Do(a) where a action
Achieve() where belief literal
+ where belief literal
Procedures are of the form
e : ←
where e trigger, formula using belief atoms, task description
![Page 5: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/5.jpg)
VIb. Reactive Action Programs 5
Programming Language for Task Descriptions
Task Meaning
noop do nothing
fail fail
add the fact to the beliefs
delete the fact from the beliefs
perform the action
conclude retract
do a
achieve attempt to achieve seq(1, 2) execute 1 then 2
if(, 1, 2) if is true, execute 1, else 2
try( , 1, 2) if succeeds, execute 1, else 2
wait(, ) wait until is true, then execute while(, 1, 2) repeat 1 until has no solution, then execute 2
![Page 6: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/6.jpg)
VIb. Reactive Action Programs 6
Example Procedures
Do(ForwardMessage(x)) : ¬IsSpam(x) ← try ( achieve ClassifyMessage(x,y),
do AddToFolder(x,y),
do Forward(x)
)
Do(ForwardMessage(x)) : IsSpam(x) ← do Delete(x)
![Page 7: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/7.jpg)
VIb. Reactive Action Programs 7
SPARK Interpreter Loop
![Page 8: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/8.jpg)
VIb. Reactive Action Programs 8
Operational Semantics: State Transitions
Semantics of a task description given by a finite automaton
Distinguished states in this automaton:
s0 initial state
s+ success state
s failure state
Labeled state transitions
s →s'c∣e
![Page 9: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/9.jpg)
VIb. Reactive Action Programs 9
Conditions and Effects
In a labeled state transition s →s', the
conditions are
presence of belief literal
absence of belief literal
effects are
addition of belief atom
removal of belief atom
Empty conditions and/or effects are simply omitted
c∣e
c=c1 , ... ,cn
e=e1 , ... ,em
c i=
c i=
ei=
ei=
![Page 10: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/10.jpg)
VIb. Reactive Action Programs 10
Example (1)
Do(ForwardMessage(x)) : IsSpam(x) ← do Delete(x)
| Desire(Delete(x)) Success(Delete(x)) |
Fail(Delete(x)) |
so
s
s+
![Page 11: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/11.jpg)
VIb. Reactive Action Programs 11
Recursive Construction of State Machine
M(noop) :<=> {s0 → s+}
M(fail) :<=> {s0 → s}
M(conclude ) :<=> {s0 → s+}
M(retract ) :<=> {s0 → s+}
M(do a) :<=> {s0 → s, s → s+, s → s}
M(achieve ) :<=> { s0 → s+, s0 → s, s → s+, s → s}
∣
∣
∣Desire a Success a ∣ Fail a∣
∣ ∣Desire Success ∣ Fail ∣
![Page 12: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/12.jpg)
VIb. Reactive Action Programs 12
Construction of State Machine (cont'd)
M(seq(1, 2)) :<=> M(1){s+/s} M(2){s0/s}
M(if (, 1, 2)) :<=> M(1) M(2)
M(try ( , 1, 2)) :<=> M(){s+/s1, s/s2} M(1){s0/s1} M(2){s0/s2}
M(wait (, )) :<=> {s0 → s} M( ){ s0/s}
M(while (, 1, 2)) :<=> {s0 → s} M(1){s0/s, s+/s} M(2){s0/s}
![Page 13: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/13.jpg)
VIb. Reactive Action Programs 13
Example (2)
so
s
ClassifyMessage(x,y) | | Desire(AddToFolder(x,y)) Success(AddToFolder(x,y)) |
ClassifyMessage(x,y) | Desire(ClassifyMessage(x,y)) Fail(AddToFolder(x,y)) |
Success(ClassifyMessage(x,y))
Fail(Forward(x)) |
Fail(ClassifyMessage(x,y)) |
| Desire(Forward(x)) Success(Forward(x)) |
s+
![Page 14: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/14.jpg)
VIb. Reactive Action Programs 14
Derivations
⟨B, D, I, ⟩ state
B set of belief literals
D set of Desire(a), Desire(), or +
I set of triples ⟨d, S, s⟩ d desire S state machine instance s current state in S
{Sense, Select, Act}
⟨B, {}, {}, Sense⟩ initial state
![Page 15: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/15.jpg)
VIb. Reactive Action Programs 15
Selection Functions
SD selects an element from the current desires
SP selects an applicable procedure for a desire
SI selects an element ⟨d, S, s1⟩ I with an allowed state transition s1 → s2
c∣e
![Page 16: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/16.jpg)
VIb. Reactive Action Programs 16
Derivation Rules (1/5)
B ' :<=> B updated according to sensing result
D ' :<=> D plus all sensed desires
⟨B ,D , I ,Sense ⟩
⟨B ' ,D ' , I ,Select⟩
![Page 17: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/17.jpg)
VIb. Reactive Action Programs 17
Derivation Rules (2/5)
If SD (D) = Desire(x) and there is applicable procedure for Do(a) (if x = a) or Achieve() (if x = )
where S state machine from SP(Desire(x))
If SD (D) = Desire(x) and no procedure applicable:
where S = {s0 → s+}
⟨B ,{}, I ,Select⟩
⟨B , {}, I ,Act⟩
⟨B ,D , I ,Select⟩
⟨B ,D \ {Desire x } , I∪{⟨Desire x ,S ,s0 ⟩ } ,Act⟩
⟨B ,D , I ,Select⟩
⟨B ,D \ {Desire x } , I∪{⟨Desire x ,S ,s0 ⟩ } ,Act⟩∣Fail x
![Page 18: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/18.jpg)
VIb. Reactive Action Programs 18
Derivation Rules (3/5)
If SD (D) = + and there is applicable procedure:
where I' :<=> all ⟨+, S, s0⟩ for applicable procedures
If SD (D) = + and no applicable procedure:
⟨B ,D , I ,Select⟩
⟨B ,D \ { } , I ∪ I ' ,Act⟩
⟨B ,D , I ,Select⟩
⟨B ,D \ { } , I ,Select⟩
![Page 19: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/19.jpg)
VIb. Reactive Action Programs 19
Derivation Rules (4/5)
If SI (I) is ⟨d, S, s1⟩ along with s1 → s2:
a) If s2 {∉s+,s}
b) If d = + and s2 { s+,s}:
⟨B ,D ,{},Act⟩
⟨B ,D ,{},Sense ⟩
c∣e
⟨B ,D , I ,Act⟩
⟨B ' ,D ' , I \ {⟨d ,S ,s1 ⟩ }∪{ ⟨d ,S , s2 ⟩ } ,Sense ⟩
⟨B ,D , I ,Act⟩
⟨B ' ,D ' , I \ { ⟨d ,S ,s1 ⟩ } ,Sense ⟩
![Page 20: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/20.jpg)
VIb. Reactive Action Programs 20
Derivation Rules (5/5)
c) If d = Desire(x) and s2 = s+
d) If d = Desire(x) and s2 = s
⟨B ,D , I ,Act ⟩
⟨B ' ∪{Success x } ,D ' , I \ {⟨d ,S ,s1 ⟩ },Sense⟩
⟨B ,D , I,Act ⟩
⟨B ' ∪{Fail x },D ' , I \ {⟨d ,S ,s1 ⟩ },Sense⟩
![Page 21: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/21.jpg)
VIb. Reactive Action Programs 21
Programming in SPARK: Packages
Package statement package: sri.foo
Declarations
Definitions
Additional facts/beliefs for the knowledge base
Import statements importfrom: spark.lang.list Member importall: spark.lang.list
Export statements export: my_sym
File requirements requires: foo.bar
Comments # comment
![Page 22: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/22.jpg)
VIb. Reactive Action Programs 22
Programming in SPARK: Declarations
Variables $foo
Strings “this is a string“
Lists [item1 item2 item3]
Actions {defaction (_myPrivateAction +$var1 $var2) doc: “_myPrivateAction is local to this file“}
Predicates {defpredicate (MyPred $var1 $var2) doc: “tests whether $var1 and $var2 are related“}
Functions {deffunction (myFun $var1 $var2) doc: “applies myFun to $var1 and $var2“}
Constants {defconstant person23}
![Page 23: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/23.jpg)
VIb. Reactive Action Programs 23
Procedures (Example)
{defprocedure paintHouse_havePaint cue: [do: (paintHouse $color)] precondition: (HavePaint $color) body: [seq: [do: (placeDropCloths)] [do: (applyPaintCoat $color)] [do: (cleanUp)] ]
}
![Page 24: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/24.jpg)
VIb. Reactive Action Programs 24
Procedures: Cue
Direct action request [do: (action_identifier variable*)]
New fact [newfact: (Happy $person)]
Achievement [achieve: (Happy $person)]
Indicating argument mode for calling a procedure: [do: (paintHouse +$color)] [do: (paintHouse +“blue“)] [do: (paintHouse “blue“)]
A procedure is relevant when its cue event occurs. There are 3 types of cues:
![Page 25: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/25.jpg)
VIb. Reactive Action Programs 25
Procedures: Precondition
any declared predicate
(True) or (False)
Logically connected expressions (and (> 4 $x) (!= $x 2) $person)) (or (AtHome $person) (AtWork $person) (AtSchool $person))
Existential quantifier (exists [$person] (AtHome $person))
A procedure is applicable when its precondition logical expression is true. Logical expressions are
![Page 26: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/26.jpg)
VIb. Reactive Action Programs 26
Procedures: Body (1)
Actions [do: (applyPaint wall red)]
Achievements [achieve: (ColorOf wall red)]
Noop [succeed:] or []
Failure [fail: outOfPaintError]
Variable binding [context: (HasParent $x $y)] [set: $x (+ 3 4)]
Sequence [seq: [context: (and (MyFavoriteColor $col1) (YourFavoriteColor $col2))] [do: (applyPaint wall $col1)] [do: (applyPaint door $col2)]
Parallel [parallel: [do: (rubStomach Bob)] [do: (patHead Bob)]]
![Page 27: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/27.jpg)
VIb. Reactive Action Programs 27
Procedures: Body (2)
Select [select: (InCar Bob) [do: (drive Bob home)] (True) [do: (talkOnCellPhone Bob)]]
Wait [wait: (AtHome Bob) [do: (talkOnCellPhone Bob)]]
Loop [while: [$x] (and (MyPet $x) (Hungry $x)) [do: (feed $x)]]
Find all solutions [forall: [$p] (InCar $p) [do: (drive $p home)]]
![Page 28: Programming in SPARK - TU Dresden · The SPARK System SPARK – Stanford Research Institute Procedural Agent Realization Kit Largescale, practical applications of reactive agent programs](https://reader033.vdocument.in/reader033/viewer/2022050405/5f82450c499095203524d2c7/html5/thumbnails/28.jpg)
VIb. Reactive Action Programs 28
Procedures: Body (3) – Special Effects
Add to knowledge base [conclude: (Happy Bill)]
Remove from knowledge base [retract: (Scared Bill)] [retractall: [$p] (Scared $p)]
Remove [while: [$x] (and (MyPet $x) (Hungry $x)) [do: (feed $x)]]