Dependency tracking in Pyro

Thank you, a couple of follow up questions:

  1. In this example, with no .to_event() is it true that x[1] will be treated as dependent on x[0], and that the entire x tensor would be treated as dependent on any previous sampled random variables (not in their own plate)? In other words, it is pretty much exactly the same as if you called .to_event(1)?

  2. As a concrete example of my .to_event(1) confusion, in this solution that @fritzo generously posted to a problem I was working through, I do not understand why the .to_event(1) calls are recommended. Unless it is just allowing for the guess_probabilities to dependent on one another (in the problem as defined, they are independent).

  3. I wanted to confirm a couple cases:

    c = pyro.sample('c', Bernoulli(0.5))
    with pyro.plate("my_plate1", 1):
          a = pyro.sample('a',  Bernoulli(0.5))
    
    with pyro.plate("my_plate2", 1):
          b = pyro.sample('b', Bernoulli(0.5))
    

is b treated as independent of a by Pyro? What about a treated independent of c? My current understanding from the rules above is that the answer to both of these questions would be no.

Is there an internal data structure I can consult to answer these types of questions myself if I run an an example through Pyro?