Beispiel #1
0
 def where(self, condition):
     rvs = frozenset(random_symbols(condition))
     if not (len(rvs)==1 and rvs.issubset(self.values)):
         raise NotImplementedError(
                 "Multiple continuous random variables not supported")
     rv = tuple(rvs)[0]
     interval = reduce_poly_inequalities_wrap(condition, rv)
     interval = interval.intersect(self.domain.set)
     return SingleContinuousDomain(rv.symbol, interval)
Beispiel #2
0
 def P(self, condition):
     cond_symbols = frozenset(rs.symbol for rs in random_symbols(condition))
     assert cond_symbols.issubset(self.symbols)
     return sum(self.prob_of(elem) for elem in self.where(condition))
Beispiel #3
0
 def where(self, condition):
     assert all(r.symbol in self.symbols for r in random_symbols(condition))
     return ConditionalFiniteDomain(self.domain, condition)
Beispiel #4
0
 def P(self, condition):
     cond_symbols = frozenset(rs.symbol for rs in random_symbols(condition))
     assert cond_symbols.issubset(self.symbols)
     return sum(self.prob_of(elem) for elem in self.where(condition))
Beispiel #5
0
 def where(self, condition):
     assert all(r.symbol in self.symbols for r in random_symbols(condition))
     return ConditionalFiniteDomain(self.domain, condition)