It's common to want to add non-exponential clocks to systems specified via VAS. For example, in the SIR example below, its quite reasonable to want the recovery clock to follow (for example) a Weibull distribution. However, for this SIR example this means that we cannot use the same machinery to specify the VAS, if we want each infectious period to be drawn from that Weibull distribution.
I don't know the best way to specify these kinds of systems but they are extremely common, so we should think about the best way to do so. As written below is clearly wrong, but any generalization of the VAS machinery to support these systems should only introduce minimal complications at the user facing level.
function sir_vas(β, c, γ)
take = [
1 0;
1 1;
0 0;
]
give = [
0 0;
2 0;
0 1;
]
rates = [(state) -> Exponential(1.0/(β*c*state[2]/sum(state)*state[1])), (state) -> Weibull(...))]
(take, give, rates)
end