Section Pedersen.
Context `{FiniteCyclicGroup}.
Hypothesis GroupElement_EqDec : EqDec GroupElement.
Definition PedersenSetup :=
a <-$ [0 .. order);
ret (g ^ a, a).
Definition PedersenCommit (h : GroupElement) (x : nat) :=
r <-$ [0 .. order);
ret (g ^ x * (h ^ r), r).
Definition PedersenReveal (a : nat)(c : GroupElement)(r : nat)(x : nat) :=
eqb c (g^x * ((g^a)^r)).
Local Open Scope nat_scope.
Variable multInverseModOrder : nat -> nat.
Hypothesis multInverseCorrect :
forall a,
(modNat (a * (multInverseModOrder a)) order = 1)%nat.

Theorem group_OTP_exp :
forall (x : nat),
comp_spec eq (RndG) (r <-$ [0 .. order) ; ret (g ^ x) ^r)%group.