# mathlibdocumentation

group_theory.specific_groups.quaternion

# Quaternion Groups #

We define the (generalised) quaternion groups quaternion_group n of order 4n, also known as dicyclic groups, with elements a i and xa i for i : zmod n. The (generalised) quaternion groups can be defined by the presentation $\langle a, x | a^{2n} = 1, x^2 = a^n, x^{-1}ax=a^{-1}\rangle$. We write a i for $a^i$ and xa i for $x * a^i$. For n=2 the quaternion group quaternion_group 2 is isomorphic to the unit integral quaternions (quaternion ℤ)ˣ.

## Main definition #

quaternion_group n: The (generalised) quaternion group of order 4n.

## Implementation notes #

This file is heavily based on dihedral_group by Shing Tak Lam.

In mathematics, the name "quaternion group" is reserved for the cases n ≥ 2. Since it would be inconvenient to carry around this condition we define quaternion_group also for n = 0 and n = 1. quaternion_group 0 is isomorphic to the infinite dihedral group, while quaternion_group 1 is isomorphic to a cyclic group of order 4.

## TODO #

Show that quaternion_group 2 ≃* (quaternion ℤ)ˣ.

@[protected, instance]
inductive quaternion_group (n : ) :
Type

The (generalised) quaternion group quaternion_group n of order 4n. It can be defined by the presentation $\langle a, x | a^{2n} = 1, x^2 = a^n, x^{-1}ax=a^{-1}\rangle$. We write a i for $a^i$ and xa i for $x * a^i$.

Instances for quaternion_group
@[protected, instance]
Equations
@[protected, instance]

The group structure on quaternion_group n.

Equations
• quaternion_group.group = {mul := mul n, mul_assoc := _, one := one n, one_mul := _, mul_one := _, npow := div_inv_monoid.npow._default one mul quaternion_group.group._proof_4 quaternion_group.group._proof_5, npow_zero' := _, npow_succ' := _, inv := inv n, div := div_inv_monoid.div._default mul quaternion_group.group._proof_8 one quaternion_group.group._proof_9 quaternion_group.group._proof_10 (div_inv_monoid.npow._default one mul quaternion_group.group._proof_4 quaternion_group.group._proof_5) quaternion_group.group._proof_11 quaternion_group.group._proof_12 inv, div_eq_mul_inv := _, zpow := div_inv_monoid.zpow._default mul quaternion_group.group._proof_14 one quaternion_group.group._proof_15 quaternion_group.group._proof_16 (div_inv_monoid.npow._default one mul quaternion_group.group._proof_4 quaternion_group.group._proof_5) quaternion_group.group._proof_17 quaternion_group.group._proof_18 inv, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _}
@[simp]
theorem quaternion_group.a_mul_a {n : } (i j : zmod (2 * n)) :
@[simp]
theorem quaternion_group.a_mul_xa {n : } (i j : zmod (2 * n)) :
@[simp]
theorem quaternion_group.xa_mul_a {n : } (i j : zmod (2 * n)) :
@[simp]
theorem quaternion_group.xa_mul_xa {n : } (i j : zmod (2 * n)) :

The special case that more or less by definition quaternion_group 0 is isomorphic to the infinite dihedral group.

Equations
@[protected, instance]

If 0 < n, then quaternion_group n is a finite group.

Equations
@[protected, instance]
theorem quaternion_group.card {n : } [ne_zero n] :
= 4 * n

If 0 < n, then quaternion_group n has 4n elements.

@[simp]
theorem quaternion_group.a_one_pow {n : } (k : ) :
@[simp]
theorem quaternion_group.a_one_pow_n {n : } :
^ (2 * n) = 1
@[simp]
theorem quaternion_group.xa_sq {n : } (i : zmod (2 * n)) :
@[simp]
theorem quaternion_group.xa_pow_four {n : } (i : zmod (2 * n)) :
= 1
@[simp]
theorem quaternion_group.order_of_xa {n : } [ne_zero n] (i : zmod (2 * n)) :

If 0 < n, then xa i has order 4.

In the special case n = 1, quaternion 1 is a cyclic group (of order 4).

@[simp]
theorem quaternion_group.order_of_a_one {n : } :
= 2 * n

If 0 < n, then a 1 has order 2 * n.

theorem quaternion_group.order_of_a {n : } [ne_zero n] (i : zmod (2 * n)) :
= 2 * n / (2 * n).gcd i.val

If 0 < n, then a i has order (2 * n) / gcd (2 * n) i.

theorem quaternion_group.exponent {n : } :
= 2 *