proposition: Lemma θ0_of_sample (s0 : S) : θ0 splo s0 = bindrFree sploP (fun r => retrFree (r, s0) ).
proof: Proof. unfold θ0. unfold unaryIntState. rewrite (op_outoffree s0). rewrite /=. rewrite /probopStP. destruct o as [X op]. reflexivity. Qed.
imports: Coq(RelationClasses Morphisms Utf8) Mon(SPropMonadicStructures SpecificationMonads MonadExamples SPropBase FiniteProbabilities) Relational(OrderEnrichedCategory OrderEnrichedRelativeMonadExamples Commutativity GenericRulesSimple) mathcomp(all_ssreflect all_algebra reals distr realsum finmap.set finmap.finmap xfinmap) Crypt(Axioms ChoiceAsOrd SubDistr Couplings Theta_dens Theta_exCP LaxComp FreeProbProg RelativeMonadMorph_prod StateTransformingLaxMorph choice_type)