End Nary.
Canonical generated_group A : {group _} := Eval hnf in [group of <<A>>].
Canonical gcore_group G A : {group _} := Eval hnf in [group of gcore G A].
Canonical commutator_group A B : {group _} := Eval hnf in [group of [~: A, B]].
Canonical joing_group A B : {group _} := Eval hnf in [group of A <*> B].
Canonical cycle_group x : {group _} := Eval hnf in [group of <[x]>].
Definition joinG G H := joing_group G H.
Definition subgroups A := [set G : {group gT} | G \subset A].

(* Specifications: *)
Lemma order_gt0 (x : gT) : 0 < #[x].
Lemma divgI G H : #|G| %/ #|G :&: H| = #|G : H|.
Lemma divgS G H : H \subset G -> #|G| %/ #|H| = #|G : H|.
Lemma Lagrange_index G H K :
H \subset G -> K \subset H -> (#|G : H| * #|H : K|)%N = #|G : K|.
Lemma indexgI G H : #|G : G :&: H| = #|G : H|.
Lemma indexSg G H K : H \subset K -> K \subset G -> #|K : H| %| #|G : H|.
Lemma indexg_eq1 G H : (#|G : H| == 1%N) = (G \subset H).
Lemma indexg_gt1 G H : (#|G : H| > 1) = ~~ (G \subset H).
Lemma rcosets_partition_mul G H : partition (rcosets H G) (H * G).
Lemma rcosets_partition G H : H \subset G -> partition (rcosets H G) G.
Lemma LagrangeMr G H : (#|G : H| * #|H|)%N = #|G * H|.
Lemma coprime_TIg G H : coprime #|G| #|H| -> G :&: H = 1.
Lemma prime_TIg G H : prime #|G| -> ~~ (G \subset H) -> G :&: H = 1.
Lemma prime_meetG G H : prime #|G| -> G :&: H != 1 -> G \subset H.
End Lagrange.