proposition: Lemma bijective_f' : ∀ m, bijective (f' m).
proof: Proof. intro m. pose proof (bijective_f m) as bij. destruct bij as [g gf fg]. unfold f'. exists (λ x, let '(a,b) := g (otf x) in prod2ch (fto a, fto b)). - cbn - [f]. intros x. rewrite -[RHS]prod2ch_ch2prod. set (y := ch2prod x). clearbody y. clear x. simpl in y. destruct y as [a b]. rewrite otf_fto. rewrite gf. rewrite !fto_otf. reflexivity. - cbn - [f]. intro x. replace x with (fto (f m (g (otf x)))) at 2. 2:{ rewrite fg. rewrite fto_otf. reflexivity. } set (y := g (otf x)). change (g (otf x)) with y. clearbody y. clear x. destruct y as [a b]. rewrite ch2prod_prod2ch. rewrite !otf_fto. reflexivity. Qed.
imports: Relational(OrderEnrichedCategory GenericRulesSimple) mathcomp(all_ssreflect all_algebra reals distr realsum fingroup.fingroup solvable.cyclic prime ssrnat ssreflect ssrfun ssrbool ssrnum eqtype choice seq) Mon(SPropBase) Crypt(Axioms ChoiceAsOrd SubDistr Couplings UniformDistrLemmas FreeProbProg Theta_dens RulesStateProb UniformStateProb pkg_core_definition choice_type pkg_composition pkg_rhl Package Prelude AsymScheme) Coq(Utf8) extructures(ord fset fmap) Equations(Equations)