8. A method for evaluating probabilistic assertions, comprising: transforming, via a processor, a program comprising a probabilistic assertion and an input into an intermediate representation, the intermediate representation comprising a Bayesian network of nodes representing distributions, wherein the probabilistic assertion comprises a probabilistic logical statement based on random variables, a probability, and a confidence value; maintaining a concrete heap and a stack instead of constructing the nodes in the Bayesian network in response to receiving non-probabilistic values; verifying, via the processor, the probabilistic assertion in the program using the intermediate representation; and changing, via the processor, the program to meet a desired specification or correctly express a probabilistic property of the program if the probabilistic assertion is verified as false.
8. A method for evaluating probabilistic assertions, comprising: transforming, via a processor, a program comprising a probabilistic assertion and an input into an intermediate representation, the intermediate representation comprising a Bayesian network of nodes representing distributions, wherein the probabilistic assertion comprises a probabilistic logical statement based on random variables, a probability, and a confidence value; maintaining a concrete heap and a stack instead of constructing the nodes in the Bayesian network in response to receiving non-probabilistic values; verifying, via the processor, the probabilistic assertion in the program using the intermediate representation; and changing, via the processor, the program to meet a desired specification or correctly express a probabilistic property of the program if the probabilistic assertion is verified as false. 9. The method of claim 8 , wherein transforming the program comprises representing loop bodies as supernodes in the intermediate representation and marginalizing conditions to produce unconditional distributions.