class CompositionMeasure(RenyiDivergence):
def composability( self, adaptivity: Adaptivity
) -> Composability:
return Composability.Concurrent
def compose(self, d_mids: Vec[Self_Distance]) -> Self_Distance:
def curve(alpha: float) -> float: epsilons = [d_mid(alpha) for d_mid in d_mids]
d_out = 0.0
for d_mid in epsilons:
d_out = d_out.inf_add(d_mid)
return d_out
return Function.new_fallible(curve)