I have a somewhat newbie question. I went through the first tutorial (An Introduction to Models in Pyro). The following example is given:

```
def geometric(p, t=None):
if t is None:
t = 0
x = pyro.sample("x_{}".format(t), pyro.distributions.Bernoulli(p))
if x.item() == 1:
return 0
else:
return 1 + geometric(p, t + 1)
```

The point is that the models can dynamically sample new variables depending on previous sample outcomes. Then I went through the second tutorial (An Introduction to Inference in Pyro) and there it is explained that the guide functions must satisfy 2 conditions:

- all unobserved (i.e., not conditioned) sample statements that appear in the model appear in the guide
- the guide has the same input signature as the model (i.e., takes the same arguments)

Let’s say I have some observations for the geometric model x_0, x_1, …, x_n. I can condition the geometric model with the observations and get a new model. However I don’t get how the guide function can sample all unobserved samples, because if the model is ran it can go and try to sample for x_n+1, x_n+2 and so on. Should the guide assume that there can be no such samples because the model is conditioned? How should situations where the guide cannot know what variables will be created be handled?