replace operator in Omega allows us to ask what-if questions. This raises thorny problems that are both philosophcal and technical. In particula, when we construct a counter-factual what-if scenario, what should be preserved from the "real" world to the counterfactual world?
Consider the following example:
coin = bernoulli(0.5, Bool) function x_(rng) coin_ = coin(rng) if coin @show b = normal(rng, 0, 1) else @show b = normal(rng, 0, 1) end (coin = coin_, b = b) end x =~ x_
Let's draw a sample where y is false
In a counterfactual world, we replace force y to be true
xnew = replace(x, y => true)
label(x, nm) =~ w -> (println("in $nm"); x(w)) xsum = label(xnew, "xnew") + label(x, "x")