Documentation

UnitConjecture.MetabelianGroup

Metabelian groups #

Metabelian groups are group extensions 1 → K → G → Q → 1 with both the kernel and the quotient Abelian. Such an extension is determined by data:

We define the cocycle condition and construct a group structure on a structure extending K × Q. The main step is to show that the cocyle condition implies associativity.

def MetabelianGroup.mul {Q : Type u_1} {K : Type u_2} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] :
K × QK × QK × Q

The multiplication operation defined using the cocycle. The cocycle condition is crucially used in showing associativity and other properties.

Equations
def MetabelianGroup.e {Q : Type u_1} {K : Type u_2} [inst : AddGroup Q] [inst : AddCommGroup K] :
K × Q

The identity element of the Metabelian group, which is the ordered pair of the identities of the individual groups.

Equations
  • MetabelianGroup.e = (0, 0)
def MetabelianGroup.inv {Q : Type u_1} {K : Type u_2} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] :
K × QK × Q

The inverse operation of the Metabelian group.

Equations

Some of the standard lemmas to show that K × Q has the structure of a group with the above operations.

theorem MetabelianGroup.left_id {Q : Type u_2} {K : Type u_1} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] (g : K × Q) :
MetabelianGroup.mul c MetabelianGroup.e g = g
theorem MetabelianGroup.right_id {Q : Type u_2} {K : Type u_1} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] (g : K × Q) :
MetabelianGroup.mul c g MetabelianGroup.e = g
theorem MetabelianGroup.left_inv {Q : Type u_2} {K : Type u_1} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] (g : K × Q) :
MetabelianGroup.mul c (MetabelianGroup.inv c g) g = MetabelianGroup.e
theorem MetabelianGroup.right_inv {Q : Type u_2} {K : Type u_1} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] (g : K × Q) :
MetabelianGroup.mul c g (MetabelianGroup.inv c g) = MetabelianGroup.e
theorem MetabelianGroup.mul_assoc {Q : Type u_2} {K : Type u_1} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] (g : K × Q) (g' : K × Q) (g'' : K × Q) :
instance MetabelianGroup.metabelianGroup {Q : Type u_1} {K : Type u_2} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] :
Group (K × Q)

A group structure on K × Q using the above multiplication operation.

Equations
theorem MetabelianGroup.mul_def {Q : Type u_1} {K : Type u_2} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] {k : K} {k' : K} {q : Q} {q' : Q} :
(k, q) * (k', q') = (k + (q +ᵥ k') + c q q', q + q')
theorem MetabelianGroup.kernel_pow {Q : Type u_1} {K : Type u_2} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] (k : K) (n : ) :
(k, 0) ^ n = (n k, 0)

Exactness #

A proof that the Metabelian group G constructed as above indeed lies in middle of the short exact sequence 1 → K → G → Q → 1.

def MetabelianGroup.Kernel.inclusion {Q : Type u_1} {K : Type u_2} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] :

The inclusion map from the kernel to the Metabelian group.

Equations
  • One or more equations did not get rendered due to their size.
theorem MetabelianGroup.Kernel.inclusion_inj {Q : Type u_2} {K : Type u_1} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] :

A proof that the inclusion map is injective.

def MetabelianGroup.Quotient.projection {Q : Type u_1} {K : Type u_2} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] :
  • The projection map from the Metabelian group to the quotient.
Equations
  • One or more equations did not get rendered due to their size.
theorem MetabelianGroup.Quotient.projection_surj {Q : Type u_1} {K : Type u_2} [inst : AddGroup Q] [inst : AddCommGroup K] (c : QQK) [ccl : Cocycle c] :

A proof that the projection map is surjective.

A proof that the image of the first map is the kernel of the second map.