Extension class groups

Extensions of finite group schemes.

class dual_pairs.ext_group.ExtGroup(*args: Any, **kwargs: Any)

The group of isomorphism classes of central extensions of a group scheme by a sheaf of Abelian groups.

EXAMPLES:

sage: from dual_pairs import DualPair, FiniteFlatAlgebra
sage: from dual_pairs.ext_group import ExtGroupGm
sage: R.<x> = QQ[]
sage: A = FiniteFlatAlgebra(QQ, [x, x^3 - x^2 - 10*x + 8], [[1], [1, -x, -1/2*x^2 + 1/2*x + 3]])
sage: Phi = 1/4 * Matrix([[1, 3, -1, -1], [3, -3, 1, 1], [-1, 1, 41, -21], [-1, 1, -21, 41]])
sage: D = DualPair(A, Phi)
sage: E = ExtGroupGm(D, [2]); E
Group of central extensions of G by Multiplicative group
where G is defined by
Dual pair of algebras over Rational Field
A = Finite flat algebra of degree 4 over Rational Field, product of:
Number Field in a0 with defining polynomial x
Number Field in a1 with defining polynomial x^3 - x^2 - 10*x + 8
B = Finite flat algebra of degree 4 over Rational Field, product of:
Number Field in a0 with defining polynomial x
Number Field in a1 with defining polynomial x^3 - x^2 - 10*x + 8
sage: E.group_structure()
(Multiplicative Abelian group isomorphic to C2 x C2 x C2 x C2 x C2,
 [Group scheme extension defined by ((Fractional ideal (1), Fractional ideal (1)), e0 + e1 + e4 - 401/31*e5 - 102/31*e6 - 78/31*e7 - 102/31*e9 - 22/31*e10 - 36/31*e11 - 78/31*e13 - 36/31*e14 + 50/31*e15),
  Group scheme extension defined by ((Fractional ideal (1), Fractional ideal (1)), e0 + e1 + e4 - 219/31*e5 + 38/31*e6 + 80/31*e7 + 38/31*e9 + 100/31*e10 + 14/31*e11 + 80/31*e13 + 14/31*e14 - 22/31*e15),
  Group scheme extension defined by ((Fractional ideal (1), Fractional ideal (1)), e0 + e1 + e4 - 6/31*e5 + 14/31*e6 - 1/31*e7 + 14/31*e9 - 16/31*e10 - 4/31*e11 - 1/31*e13 - 4/31*e14 + 1/31*e15),
  Group scheme extension defined by ((Fractional ideal (1), Fractional ideal (1)), e0 + e1 + e4 + 85/31*e5 - 52/31*e6 - 34/31*e7 - 52/31*e9 + 17/31*e10 + 13/31*e11 - 34/31*e13 + 13/31*e14 + 9/31*e15),
  Group scheme extension defined by ((Fractional ideal (1), Fractional ideal (1)), 2*e0 + 2*e1 + 2*e4 + 13/31*e5 - 19/31*e6 - 4/31*e7 + 37/31*e9 - 1/31*e10 - 12/31*e11 + 2/31*e13 + 6/31*e14)],
 <function abelian_group_smith_form.<locals>.exp at 0x...>,
 <function abelian_group_smith_form.<locals>.log at 0x...>)
Element

alias of ExtGroupElement

commutative_subgroup()

Return the subgroup of self classifying commutative extensions.

This requires the group scheme to be commutative.

EXAMPLES:

sage: from dual_pairs import DualPair, FiniteFlatAlgebra
sage: from dual_pairs.ext_group import ExtGroupGm
sage: R.<x> = QQ[]

sage: A = FiniteFlatAlgebra(QQ, [x, x, x, x])
sage: Phi = 1/4 * Matrix([[1, 1, -1, -1], [1, 1, 1, 1], [-1, 1, 1, -1], [-1, 1, -1, 1]])
sage: D = DualPair(A, Phi)
sage: E = ExtGroupGm(D, [])
sage: E.commutative_subgroup()
Abelian group morphism:
  From: Multiplicative Abelian group isomorphic to C2 x C2
  To:   Multiplicative Abelian group isomorphic to C2 x C2 x C2
Defn:
  f0 |--> f0
  f1 |--> f2
gens()

Return a list of generators of self.

EXAMPLES:

sage: from dual_pairs import DualPair, FiniteFlatAlgebra
sage: from dual_pairs.ext_group import ExtGroupGm
sage: R.<x> = QQ[]
sage: A = FiniteFlatAlgebra(QQ, [x, x])
sage: Phi = 1/2 * Matrix([[1, 1], [1, -1]])
sage: D = DualPair(A, Phi)
sage: E = ExtGroupGm(D, [])
sage: E.gens()
[Group scheme extension defined by ((Fractional ideal (1), Fractional ideal (1)), e0 + e1 + e2 - e3)]
gens_orders()

Return a list of generators of self.

EXAMPLES:

sage: from dual_pairs import DualPair, FiniteFlatAlgebra
sage: from dual_pairs.ext_group import ExtGroupGm
sage: R.<x> = QQ[]
sage: A = FiniteFlatAlgebra(QQ, [x, x])
sage: Phi = 1/2 * Matrix([[1, 1], [1, -1]])
sage: D = DualPair(A, Phi)
sage: E = ExtGroupGm(D, [])
sage: E.gens_orders()
(2,)
group_structure()

Return the group structure of self.

EXAMPLES:

sage: from dual_pairs import DualPair, FiniteFlatAlgebra
sage: from dual_pairs.dual_pair_from_dihedral_field import dual_pair_from_dihedral_field
sage: from dual_pairs.ext_group import ExtGroupGm
sage: R.<x> = QQ[]

sage: A = FiniteFlatAlgebra(QQ, [x, x, x, x])
sage: Phi = 1/4 * Matrix([[1, 1, -1, -1], [1, 1, 1, 1], [-1, 1, 1, -1], [-1, 1, -1, 1]])
sage: D = DualPair(A, Phi)
sage: E = ExtGroupGm(D, [])
sage: E.group_structure()[0]
Multiplicative Abelian group isomorphic to C2 x C2 x C2

sage: D = dual_pair_from_dihedral_field(x^3 - x - 1, GF(2))
sage: E = ExtGroupGm(D, [2, 23])
sage: E.group_structure()
(Multiplicative Abelian group isomorphic to C2 x C2 x C2,
 [Group scheme extension defined by ((Fractional ideal (1), Fractional ideal (1)), e0 + e1 + e4 - 9/23*e5 - 2/23*e6 + 6/23*e7 - 2/23*e9 + 20/23*e10 - 14/23*e11 + 6/23*e13 - 14/23*e14 + 19/23*e15),
  Group scheme extension defined by ((Fractional ideal (1), Fractional ideal (1)), e0 + e1 + e4 + 10/23*e5 - 31/23*e6 + 47/23*e7 - 31/23*e9 + 126/23*e10 - 56/23*e11 + 47/23*e13 - 56/23*e14 - 39/23*e15),
  Group scheme extension defined by ((Fractional ideal (1), Fractional ideal (1)), 23*e0 + 23*e1 + 23*e4 + 7/23*e5 - 24/23*e6 + 26/23*e7 + 22/23*e9 + 10/23*e10 - 76/23*e11 - 20/23*e13 + 62/23*e14 - 2/23*e15)],
 <function abelian_group_smith_form.<locals>.exp at 0x...>,
 <function abelian_group_smith_form.<locals>.log at 0x...>)

sage: D = dual_pair_from_dihedral_field(x^3 + 4*x - 1, GF(2))
sage: E = ExtGroupGm(D, [])
sage: E.group_structure()
(Multiplicative Abelian group isomorphic to C2 x C2,
 [Group scheme extension defined by ((Fractional ideal (1), Fractional ideal (1)), e0 + e1 + e4 + 40/283*e5 + 41/283*e6 + 15/283*e7 + 41/283*e9 + 134/283*e10 - 20/283*e11 + 15/283*e13 - 20/283*e14 + 41/283*e15),
  Group scheme extension defined by ((Fractional ideal (1), Fractional ideal (3, a + 1)), e0 + e1 + e4 + 1670/849*e5 - 19/283*e6 + 697/849*e7 - 19/283*e9 + 359/849*e10 + 14/849*e11 + 697/849*e13 + 14/849*e14 + 226/849*e15)],
 <function abelian_group_smith_form.<locals>.exp at 0x...>,
 <function abelian_group_smith_form.<locals>.log at 0x...>)

# from elliptic curve 2184.j1
# 2-descent shows that 2-Selmer group is isomorphic to (Z/2Z)^4
# rank 1, torsion Z/2Z
# Sha[2] is isomorphic to (Z/2Z)^2
# factorisation of conductor: 2^3 * 3 * 7 * 13
# Tamagawa numbers: 1, 1, 1, 2
# so the only bad prime should be 13
sage: A = FiniteFlatAlgebra(QQ, [x, x, x^2 - 42])
sage: Phi = Matrix([[1/4, 1/4, 1/2, 0],
....:               [1/4, 1/4, -1/2, 0],
....:               [1/2, -1/2, 0, 0],
....:               [0, 0, 0, 42]])
sage: D = DualPair(A, Phi)
sage: E = ExtGroupGm(D, [13])
sage: B, gens, exp, log = E.group_structure()
sage: B
Multiplicative Abelian group isomorphic to C2 x C2 x C2 x C2
sage: exp(B.gen(0))
Group scheme extension defined by ((Fractional ideal (1), Fractional ideal (1), Fractional ideal (1)), 13*e0 + 13*e1 + 13*e2 + 13*e4 + 13*e5 - 13*e6 + 13*e8 - 13*e9 + 1/42*e15)
sage: log(gens[1])
f1
sage: log(exp(B.gen(3))) == B.gen(3)
True
one()

Return the unit element of self.

EXAMPLES:

sage: from dual_pairs import DualPair, FiniteFlatAlgebra
sage: from dual_pairs.ext_group import ExtGroup_mu_n
sage: R.<x> = QQ[]
sage: A = FiniteFlatAlgebra(QQ, [x, x])
sage: Phi = 1/2 * Matrix([[1, 1], [1, -1]])
sage: D = DualPair(A, Phi)
sage: E = ExtGroup_mu_n(D, [], 2)
sage: E.one()
Group scheme extension defined by ((1, 1), e0 + e1 + e2 + e3)
order()

Return the order of self.

EXAMPLES:

sage: from dual_pairs import DualPair, FiniteFlatAlgebra
sage: from dual_pairs.ext_group import ExtGroupGm
sage: R.<x> = QQ[]
sage: A = FiniteFlatAlgebra(QQ, [x, x])
sage: Phi = 1/2 * Matrix([[1, 1], [1, -1]])
sage: D = DualPair(A, Phi)
sage: E = ExtGroupGm(D, [])
sage: E.order()
2
class dual_pairs.ext_group.ExtGroupElement(*args: Any, **kwargs: Any)
dual_pairs.ext_group.ExtGroupGm(D, S)

Return the group of isomorphism classes of central extensions of a group scheme by the multiplicative group.

INPUT:

  • D – a dual pair of algebras over \(\mathbf{Q}\)

  • S – a finite set of prime numbers

    sage: from dual_pairs import DualPair, FiniteFlatAlgebra sage: from dual_pairs.ext_group import ExtGroupGm sage: R.<x> = QQ[] sage: A = FiniteFlatAlgebra(QQ, [x, x]) sage: Phi = 1/2 * Matrix([[1, 1], [1, -1]]) sage: D = DualPair(A, Phi) sage: ExtGroupGm(D, []) Group of central extensions of G by Multiplicative group where G is defined by Dual pair of algebras over Rational Field A = Finite flat algebra of degree 2 over Rational Field, product of: Number Field in a0 with defining polynomial x Number Field in a1 with defining polynomial x B = Finite flat algebra of degree 2 over Rational Field, product of: Number Field in a0 with defining polynomial x Number Field in a1 with defining polynomial x

dual_pairs.ext_group.ExtGroup_mu_n(D, S, n)

Return the group of isomorphism classes of central extensions of a group scheme by the sheaf of n-th roots of unity.

INPUT:

  • D – a dual pair of algebras over \(\mathbf{Q}\)

  • S – a finite set of prime numbers

  • n – a positive integer

EXAMPLES:

sage: from dual_pairs import DualPair, FiniteFlatAlgebra
sage: from dual_pairs.ext_group import ExtGroup_mu_n
sage: R.<x> = QQ[]
sage: A = FiniteFlatAlgebra(QQ, [x, x])
sage: Phi = 1/2 * Matrix([[1, 1], [1, -1]])
sage: D = DualPair(A, Phi)
sage: E = ExtGroup_mu_n(D, [], 2)
sage: E
Group of central extensions of G by Sheaf of 2nd roots of unity
where G is defined by
Dual pair of algebras over Rational Field
A = Finite flat algebra of degree 2 over Rational Field, product of:
Number Field in a0 with defining polynomial x
Number Field in a1 with defining polynomial x
B = Finite flat algebra of degree 2 over Rational Field, product of:
Number Field in a0 with defining polynomial x
Number Field in a1 with defining polynomial x
sage: E.group_structure()
(Multiplicative Abelian group isomorphic to C2 x C2,
 [Group scheme extension defined by ((1, 1), e0 + e1 + e2 - e3),
  Group scheme extension defined by ((1, -1), e0 + e1 + e2 + e3)],
 <function abelian_group_smith_form.<locals>.exp at 0x...>,
 <function abelian_group_smith_form.<locals>.log at 0x...>)