Example: easy extensions¶
Commutative extensions of \(\mathbf{Z}/m\mathbf{Z}\) by \(\mu_n\) over a ring \(R\).
If the Picard group of \(R\) is trivial, such extensions are classified up to isomorphism by pairs \((a, b) \in R^\times \times R^\times\) satisfying \(a^m b^n=1\), modulo the action of \(R^\times\) defined by \(c(a,b)=(c^{-n} a,c^m b)\).
- dual_pairs.extension.extension(R, m, n, a, b)¶
Return the extension of \(\mathbf{Z}/m\mathbf{Z}\) by \(\mu_n\) over R defined by the pair \((a,b)\).
EXAMPLES:
sage: from dual_pairs.extension import extension sage: E = extension(QQ, 2, 2, 17, 1/17) sage: L.<u> = E.splitting_field(); L Number Field in u with defining polynomial t^2 - t - 4 sage: E.group_structure(L)[0] Additive abelian group isomorphic to Z/2 + Z/2 sage: F = extension(QQ, 2, 2, 17, -1/17) sage: M.<v> = F.splitting_field(); M Number Field in v with defining polynomial t^4 + 1156 sage: F.group_structure(M)[0] Additive abelian group isomorphic to Z/4 sage: G = extension(QQ, 2, 3, 5^3, 1/5^2) sage: T.<v> = G.splitting_field(); T Number Field in v with defining polynomial t^2 + 4*t + 31 sage: G.group_structure(T)[0] Additive abelian group isomorphic to Z/6 sage: E = extension(QQ, 3, 3, 7, 1/7) sage: L.<a> = E.splitting_field(); L Number Field in a with defining polynomial t^6 ... sage: L.is_abelian() False sage: E.group_structure(L)[0] Additive abelian group isomorphic to Z/3 + Z/3 sage: H = extension(QQ, 5, 3, 2^3, 1/2^5) sage: U.<v> = H.splitting_field(); U Number Field in v with defining polynomial t^8 ... sage: U.discriminant().factor() 3^4 * 5^6 sage: U.conductor() 15 sage: H.group_structure(U)[0] Additive abelian group isomorphic to Z/15 sage: J = extension(QQ, 4, 6, 8, 1/4) sage: V.<a> = J.splitting_field(); V Number Field in a with defining polynomial t^8 ... sage: V.discriminant().factor() 2^16 * 3^4 sage: V.conductor() 24 sage: J.group_structure(V)[0] Additive abelian group isomorphic to Z/12 + Z/2