induction n2; intuition; simpl in *.
rewrite mult_0_r.
trivial.
rewrite mult_comm.
simpl.
rewrite groupExp_plus.
f_equal.
rewrite IHn2.
rewrite mult_comm.
trivial.
Qed.
End GroupProperties.
Class FiniteCyclicGroup `{G: Group}
(g : GroupElement)(order : posnat)(groupLog : GroupElement -> GroupElement -> nat) := {
generator : GroupElement -> Prop;
g_generator : generator g;
group_cyclic: forall (g a : GroupElement),
generator g ->
g^(groupLog g a) = a;
groupLog_correct: forall g x,
generator g ->
modNat (groupLog g (g^x)) order = modNat x order;
groupIdent : forall g,
generator g ->
g^0 = ident;
groupOrder : forall g,
generator g ->
g^order = g^0
}.
Section FiniteCyclicGroupProperties.
Context`{FCG : FiniteCyclicGroup}.

(* Specifications: *)
Lemma groupExp_eq_h : forall g c1 v,
generator g ->
v < order ->
g^(c1 * order + v) = g^v.