Skip to content

Decompose a prime in the ring of integers

julia
julia> Qx, x = QQ[:x];

julia> K, a = number_field(x^2 - 5, :a);

julia> OK = ring_of_integers(K);

We decompose the ideals generated by 5, 7 and 11:

julia
julia> prime_decomposition(OK, 5)
1-element Vector{Tuple{AbsSimpleNumFieldOrderIdeal, Int64}}:
 (<5, a>
Norm: 5
Minimum: 5
two normal wrt: 5, 2)

julia> prime_decomposition(OK, 7)
1-element Vector{Tuple{AbsSimpleNumFieldOrderIdeal, Int64}}:
 (<7, 7>
Norm: 49
Minimum: 7
principal generator 7
two normal wrt: 7, 1)

julia> prime_decomposition(OK, 11)
2-element Vector{Tuple{AbsSimpleNumFieldOrderIdeal, Int64}}:
 (<11, a + 4>
Norm: 11
Minimum: 11
two normal wrt: 11, 1)
 (<11, a + 7>
Norm: 11
Minimum: 11
two normal wrt: 11, 1)

It is also possible to directly determine the decomposition type:

julia
julia> prime_decomposition_type(OK, 5)
1-element Vector{Tuple{Int64, Int64}}:
 (1, 2)

julia> prime_decomposition_type(OK, 7)
1-element Vector{Tuple{Int64, Int64}}:
 (2, 1)

julia> prime_decomposition_type(OK, 11)
2-element Vector{Tuple{Int64, Int64}}:
 (1, 1)
 (1, 1)

We can also determine the prime ideals above prime numbers in non-maximal orders:

julia
julia> R = equation_order(K)
Order of number field of degree 2 over QQ
with Z-basis [1, a]

julia> prime_ideals_over(R, 2)
1-element Vector{AbsSimpleNumFieldOrderIdeal}:
 Ideal of (R)
with basis matrix
[2 0; 1 1]