fact: Fixpoint bounded_iter {A B : choiceType} (n : nat) (c : A -> MFreePr (sum_choiceType A B)) (a : A) : MFreePr (sum_choiceType unit_choiceType B) := match n with | 0 => ord_relmon_unit MFreePr _ (inl Datatypes.tt) | S m => (ord_relmon_bind MFreePr) (fun v => match v with | inl a' => bounded_iter m c a' | inr b => ord_relmon_unit MFreePr _ (inr b) end) (c a) end.
imports: Coq(RelationClasses Morphisms Utf8) Mon(FiniteProbabilities SPropMonadicStructures SpecificationMonads MonadExamples SPropBase) Relational(OrderEnrichedCategory OrderEnrichedRelativeMonadExamples Commutativity GenericRulesSimple) mathcomp(all_ssreflect all_algebra reals distr realsum) Crypt(Axioms ChoiceAsOrd SubDistr Couplings Theta_dens Theta_exCP LaxComp FreeProbProg RelativeMonadMorph_prod)