Skip to content

ProfiniteDecomposition ​

{b,a}\{b, a\} with m=b⋅am = b \cdot a, b∈GLn(Z^)b \in GL_n(\hat{\mathbb{Z}}) and a∈GLn+(Q)a \in GL_n^+(\mathbb{Q}) upper triangular — strong approximation for a matrix over Q^\hat{\mathbb{Q}}.

ProfiniteDecomposition(m)mm a square matrix (list of lists) of ProfiniteNumber or rational entries
ProfiniteDecomposition(m, d)with dd = det⁡m\det m supplied explicitly rather than computed from mm's entries
SageMathenumeratio_profinite_decomposition(m, d)
Typed signatures
TypePackageApplies
(list, number?) -> listadelesalways

Domain: Adèles and idèles

Details
  • Hertogh's Algorithm 8.4: GLn(Q^)=GLn(Z^)⋅GLn+(Q)GL_n(\hat{\mathbb{Q}}) = GL_n(\hat{\mathbb{Z}}) \cdot GL_n^+(\mathbb{Q}), strong approximation for GLnGL_n over Q\mathbb{Q}.
  • bb's entries are profinite numbers; aa's are rationals. Built on HermiteDecomposition of the denominators.

Examples

14 more kept as data, checked against the oracles
Basic #

already in GLn+(Q)GL_n^+(\mathbb{Q}) upper-triangular form: bb is the identity

live ↗
InProfiniteDecomposition([[2,1],[0,3]])\mathrm{ProfiniteDecomposition}(\bigl\lbrack\bigl\lbrack2, 1\bigr\rbrack, \bigl\lbrack0, 3\bigr\rbrack\bigr\rbrack)Out[[[1,0],[0,1]],[[2,1],[0,3]]]\bigl\lbrack\bigl\lbrack\bigl\lbrack1, 0\bigr\rbrack, \bigl\lbrack0, 1\bigr\rbrack\bigr\rbrack, \bigl\lbrack\bigl\lbrack2, 1\bigr\rbrack, \bigl\lbrack0, 3\bigr\rbrack\bigr\rbrack\bigr\rbrack
About
Examples15
Checked againstSageMath 14 agree
CrosswalkSageMath

Implementation

mappedsagepackages/oracle/src/mappings.ts

Hertogh's Algorithm 8.4 (factor_GLQhat); no one-liner, so run.ts's SAGE_PREAMBLE carries the matrix-building helper. The arity-1 form (det computed from $1) has no row -- Sage's generic matrix determinant does not work over the Qhat ring (checked; TypeError coercing a ProfiniteNumber to an integer).

See also: HermiteDecomposition, ProfiniteNumber