proposition: Lemma group_prodC : ∀ (x y : gT), x * y = y * x.
proof: Proof. move => x y. have Hx: exists ix, x = g^+ix. { apply /cycleP. rewrite -g_gen. apply: in_setT. } have Hy: exists iy, y = g^+iy. { apply /cycleP. rewrite -g_gen. apply: in_setT. } destruct Hx as [ix Hx]. destruct Hy as [iy Hy]. subst. repeat rewrite -expgD addnC. 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 SigmaProtocol) Coq(Utf8) extructures(ord fset fmap) Equations(Equations)