The expectation transformation takes a program representing a measure, and a function over the sample space, and returns a program computing the expectation over that measure with respect to the given function.


Expect can be used inside programs with the expect keyword.

expect x <~ uniform(1,3):
    real2prob(2*x + 1)

This program computes the expectation of uniform(1,3) using the function 2*x + 1. This program expands to the following equivalent program:

integrate x from 1 to 3: 
 recip(real2prob(3 - 1)) * real2prob(2*x + 1)

This can be optimized by piping by it into the simplify program. It will in turn return 5.