Ritwika Ghosh
University of Illinois at Urbana-Champaign
in zero Logical Time (?)
over a δ time interval.
Waypoint(i)
using Motion actuator target sensor pos, status
local
Bool pick = true
Position currentDest
List<Position> dests =
[(200,10,0);(100,100,0);(50,200;0)]PickDest:
pre pick
eff if (¬ isEmpty(dests))
currentDest = head(dests)
Motion.target = currentDest
pick = false
Remove:
pre ¬ pick
eff if(Motion.status == done)
remove(dests,currentDest)
pick = truewaypoints
Lineform(i)
using Motion actuator target sensor pos, status
import lineform.decls
Update:
eff x[pid] = Motion.pos
if ¬ (pid == 1 or pid == 5)
Motion.target = (x[pid + 1 ] + x[pid − 1 ])/2]]]
lineform.decls
allwrite:
allread:
int xlineform
allwrite: Multi-writer, multi-reader.
allread(w) : Single-writer, multi - reader.
allread(*) : declared for all agents.
Also, Formal Systems Laboratory, UIUC.
C : Set of Agent Configs
Global Context
Global Time
Evolution type
Initializing...
Waypoints to be visited
Initial values of program variables
Create local copies of shared variables
Program Code
Local Context
Write permissions
Controller Port Map
En , Ur
Evolution type
pre urgent (a == b) The statement level semantics are given by rewrite rules of type :
Control flow rules :
environment transition
program transition
Executable
Semantics
Property
Program
discrete set of reachable states
Traces of sensor readings
K framework
BlackBox
Safe/Unsafe
BMC
DryVR
Koord
Application
Parser
Included in model, but now iRL.
Traffic(i)
using Motion actuator target sensor pos, status
import traffic.decls
local
Position next
List<Int> required
Ready:
pre stage == pick
eff required = getRequired(next)
for j in required enqueue(request[j ],pid)
stage = entry
Enter:
pre stage == entry
eff if for j in required head(request[j ]) = pid
Motion.target = next
stage = cs
Traverse:
pre stage == cs
eff if (Motion.status == done)
for j in required
dequeue(request[j ],pid)~ 450 lines in Java, using StarL, which still provides a huge number of abstractions.