Parameter U : Type.Parameter Gr : Group U.Definition G : Ensemble U := G_ U Gr.Definition star : U -> U -> U := star_ U Gr.Definition inv : U -> U := inv_ U Gr.Definition e : U := e_ U Gr.Definition G0' : forall a b : U, In U G a -> In U G b -> In U G (star a b) :=
  G0 U Gr.Definition G1' : forall a b c : U, star a (star b c) = star (star a b) c :=
  G1 U Gr.Definition G2a' : In U G e := G2a U Gr.Definition G2b' : forall a : U, star e a = a := G2b U Gr.Definition G2c' : forall a : U, star a e = a := G2c U Gr.Definition G3a' : forall a : U, In U G a -> In U G (inv a) := G3a U Gr.Definition G3b' : forall a : U, star a (inv a) = e := G3b U Gr.Definition G3c' : forall a : U, star (inv a) a = e := G3c U Gr.Definition triv1' : forall a b : U, star (inv a) (star a b) = b := triv1 U Gr.Definition triv2' : forall a b : U, star (star b a) (inv a) = b := triv2 U Gr.Definition resolve' : forall a b : U, star b a = e -> b = inv a :=
  resolve U Gr.Definition self_inv' : e = inv e := self_inv U Gr.Definition inv_star' :
  forall a b : U, star (inv b) (inv a) = inv (star a b) := 
  inv_star U Gr.Definition cancellation' : forall a b : U, star a b = a -> b = e :=
  cancellation U Gr.Definition inv_involution' : forall a : U, a = inv (inv a) :=
  inv_involution U Gr.

Theorem inv_endo : endo_function U (G_ U H) inv.