situation calculus works well on a single agent performing instantaneous, discrete actions. However, when actions have duration and overlaps with each other, event calculus should be used.
event calculus
- is based on points in time rather than situations
- in event calculus, fluents (functions or predicates that vary from one situation or time to the next) hold at points in time rather than at situations
- designed to reason over intervals of time
- an event calculus axiom says that a fluent is true at a point in time if the fluent was initiated by an event at some time in the past and was not terminated by an intervening event
- the INITIATES and TERMINATES relations plays a similar role to the RESULT relation in situation calculus
- INITIATES(e,f,t) means that event e at time t cause fluent f to be true
- TERMINATES(w,f,t) means that event w at time t causes fluent f to be false
- HAPPENS(e,t) means event e happens at time t
- CLIPPED(f,t1,t2) means fluent f is terminated at sometime between time t1 and t2
- this gives us functionality similar to situational calculus but with ability to talk about time points and intervals (e.g. HAPPENS(turn_off(light_switch_1), 1:00) meaning “light switch was turned off at 1:00”)
- extensions of event calculus to address problems of indirect effects, events with duration, concurrent events, continuously changing events, nondeterministic effects, causal constraints, etc