Variables (gT : finGroupType) (G : {group gT}) (n : nat).
Implicit Type H : {group gT}.
Let m := (2 ^ n)%N.
Let q := (2 ^ n.-1)%N.
Let q_gt0: q > 0. Proof. by rewrite expn_gt0. Qed.
Let r := (2 ^ n.-2)%N.
Let r_gt0: r > 0. Proof. by rewrite expn_gt0. Qed.
Let def2qr : n > 1 -> [/\ 2 * q = m, 2 * r = q, q < m & r < q]%N.

(* Specifications: *)
Lemma generators_semidihedral :
n > 3 -> G \isog 'SD_m ->
exists2 xy, extremal_generators G 2 n xy
& let: (x, y) := xy in #[y] = 2 /\ x ^ y = x ^+ r.-1.
Lemma generators_quaternion :
n > 2 -> G \isog 'Q_m ->
exists2 xy, extremal_generators G 2 n xy
& let: (x, y) := xy in [/\ #[y] = 4, y ^+ 2 = x ^+ r & x ^ y = x^-1].