public Markov <T> ToDistribution() { var initial = _initial.ToDistribution(); var transitions = _transitions.ToDictionary( kv => kv.Key, kv => kv.Value.ToDistribution()); IDistribution <T> Transition(T state) => transitions.GetValueOrDefault(state, Empty <T> .Distribution()); return(Markov <T> .Distribution(initial, Transition)); }