Section ExtremalStructure.
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.
Variables x y : gT.
Implicit Type M : {group gT}.
Let X := <[x]>.
Let Y := <[y]>.
Let yG := y ^: G.
Let xyG := (x * y) ^: G.
Let My := <<yG>>.
Let Mxy := <<xyG>>.

Theorem quaternion_structure :
n > 2 -> extremal_generators G 2 n (x, y) -> G \isog 'Q_m ->
[/\ [/\ pprod X Y = G, {in G :\: X, forall t, #[t] = 4}
& {in X & G :\: X, forall z t, z ^ t = z^-1}],
[/\ G ^`(1) = <[x ^+ 2]>, 'Phi(G) = G ^`(1), #|G^`(1)| = r
& nil_class G = n.-1],
[/\ 'Z(G) = <[x ^+ r]>, #|'Z(G)| = 2,
forall u, u \in G -> #[u] = 2 -> u = x ^+ r,
'Ohm_1(G) = <[x ^+ r]> /\ 'Ohm_2(G) = G
& forall k, k > 0 -> 'Mho^k(G) = <[x ^+ (2 ^ k)]>],
[/\ yG :|: xyG = G :\: X /\ [disjoint yG & xyG]
& forall M, maximal M G = pred3 X My Mxy M]
& n > 3 ->
[/\ My \isog 'Q_q, Mxy \isog 'Q_q
& forall U, cyclic U -> U \subset G -> #|G : U| = 2 -> U = X]].