Here is a trichotomy of ways the hazard rate of a rewrite rule could be triggered:1
- Stateless: we simply provide a probability measure $Meas$ which is sampled whenever a match is found.
- Stateful: Let $\Xi:=Ob(ACSet)$.2 We provide a function $\Xi \rightarrow Meas$, which is sampled whenever a match is found. However, because the event may happen in the future, our world state could change before the event is triggered. There are a few ways we could deal with this, but by default we would cancel the timer, and resample a new event with the new state.
- Historical: We provide a function $\sum_{t \in [0,\infty)} \Xi^{[0,t]} \rightarrow Meas$, which takes any trajectory (of some length) and gives a probability measure. In this case, we are not forced to draw from our single $\Xi \rightarrow Meas$ function at the current time $\Xi$ has changed, but we can take into account what has happened.
As a motivating example: consider $\Xi = {sick,verySick}$. The moment we enter the sick state, we are triggered to die in four years. However, three years in, we transition to verySick, which has as its rule that one has two years to live. With the stateful-but-not-historical approach, becoming very sick adds a year to one's life!
Another motivating example: consider a rewrite rule with a probability measure that is a decaying exponential $e^{-\alpha(t-5)}$ which is delayed 5 seconds from when the match occurs. If $\alpha$ is a continuous variable that is updated at very short intervals via continuous dynamics, then we will certainly change its value before 5 seconds have passed, and thus by the stateful approach we would constantly be resetting the 5 second clock and the event would never fire.
Currently we do not implement historical dependency, but it is something consider if we find ourselves limited by the stateful approach (and compensating for it by sticking lots of historical details into the schema itself).
Here is a trichotomy of ways the hazard rate of a rewrite rule could be triggered:1
As a motivating example: consider$\Xi = {sick,verySick}$ . The moment we enter the sick state, we are triggered to die in four years. However, three years in, we transition to verySick, which has as its rule that one has two years to live. With the stateful-but-not-historical approach, becoming very sick adds a year to one's life!
Another motivating example: consider a rewrite rule with a probability measure that is a decaying exponential$e^{-\alpha(t-5)}$ which is delayed 5 seconds from when the match occurs. If $\alpha$ is a continuous variable that is updated at very short intervals via continuous dynamics, then we will certainly change its value before 5 seconds have passed, and thus by the stateful approach we would constantly be resetting the 5 second clock and the event would never fire.
Currently we do not implement historical dependency, but it is something consider if we find ourselves limited by the stateful approach (and compensating for it by sticking lots of historical details into the schema itself).
Footnotes
We'll ignore the parameterization via absolute clock time for simplicity ↩
This is for simplicity; in reality we have slightly more data, i.e. a choice of X in Ob(ACSet) and morphism L->X ↩