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...>)