THe 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
rand(x, )
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")