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.

(* Specifications: *)
Theorem triv1 : forall a b : U, star (inv a) (star a b) = b.
Theorem triv2 : forall a b : U, star (star b a) (inv a) = b.
Theorem resolve : forall a b : U, star b a = e -> b = inv a.
Theorem self_inv : e = inv e.
Theorem inv_star : forall a b : U, star (inv b) (inv a) = inv (star a b).
Theorem cancellation : forall a b : U, star a b = a -> b = e.
Theorem inv_involution : forall a : U, a = inv (inv a).