Hi, I've been looking at your 2015 article on slice sampling for probabilistic programming. This seems like an important topic, and I'm curious if you have a version that includes more details in the proof of reversibility for the slice sampling when different values of x have different dimensions?
Q1. It seems that your function P*(x) could yield multiple different values for the same value x1 of x if x=x1 has a higher dimension than x=x0, because the new random dimensions could be sampled differently from the prior each time P*(x) is evaluated. In such cases, when performing the stepping out, which state you modify to obtain the value of P*(x) would seem to matter. Can you clarify this?
Q2. If your implementation ensures that each time x is evaluated, the same value is chosen for each previously-unsampled variable regardless of the final dimension of the MCMC state, then this might not be an issue for StocPy. Maybe that is true of stochastic-database approaches to probprog?
Q3. In the Slice Sampling paper by Radford Neal, he writes:
"Note that when the interval is doubled the two sides are not expanded equally. Instead just one side is expanded, chosen at random (irrespective of whether that side is already outside the slice). This is essential to the correctness of the method, since it produces a final interval that could have been obtained from points other than the current one. The set A of acceptable next states is restricted to those for which the same interval could have been produced, and is in general not all of S ∩I. This complicates the subsequent sampling somewhat, as described below"
This seems not to be what your "StepOut" pseudocode does. Also, you don't seem to have an accept step, which seems necessary if you are using the "doubling" method of expanding the slice.