Riquier rankings in OSCAR
In OSCAR, we define rankings, i.e., total orderings of $X$, by combining the natural less-than relation on $\underline{m}$ with a customizable total ordering on $\mathbb{N}_0^n$. The latter is constructed as a matrix ordering; see index_ordering_matrix.
The way of combining of these two total orderings to obtain a total ordering of $X$ is specified by an ordered partition of $\underline{m}$, i.e. by grouping the elements of $\underline{m}$ into blocks. The first block is considered largest and so on. See partition.
Consider two elements $x_1 = (i_1, J_1), x_2 = (i_2, J_2) \in X$. Then $x_1 < x_2$ if and only if:
- The block of $i_1$ is smaller than the one of $i_2$.
- $i_1$ and $i_2$ are in the same block and $J_1 < J_2$ with respect to the total ordering on $\mathbb{N}_0^n$.
- $i_1$ and $i_2$ are in the same block, $J_1 = J_2$ and $i_1 < i_2$.
Each action polynomial ring has an internal field ranking, which can be modified using the set_ranking!-method.
set_ranking! — Function
set_ranking!(A::ActionPolyRing;
partition_name::Symbol = :default,
index_ordering_name::Symbol = :default,
partition::Vector{Vector{Int}} = Vector{Int}[],
index_ordering_matrix::ZZMatrix = zero_matrix(ZZ, 0, 0))This method configures the ranking of the action polynomial ring A, using an ordered partition of the action indeterminates and a monomial ordering on the indices. The ranking can be specified either by choosing predefined naming options or by explicitly providing a custom configuration.
Keyword Arguments
partition_name: Determines the partition of the action indeterminates ofdpr. Supported values are::top: groups all action indeterminates into a single block,:pot: separates each action indeterminate into its own block,:default: uses:topunless a custom partition is specified.
index_ordering_name: Specifies the ordering on the multiindices. Supported values are::lex: lexicographic ordering,:deglex: degree lexicographic ordering,:invlex: inverse lexicographic ordering,:deginvlex: degree inverse lexicographic ordering,:degrevlex: degree reverse lexicographic ordering,:default: uses:lexunless a custom matrix is specified.
partition: A custom partition of the action indeterminates, represented as a vector of characteristic vectors. The action indeterminates corresponding to the first characteristic vectors are considered largest and so on.index_ordering_matrix: A custom matrix representing a monomial ordering on the indices. Its number of columns must equaln_action_maps(A).
Examples
julia> dpr = differential_polynomial_ring(ZZ, [:a, :b, :c], 4; partition_name=:pot, index_ordering_name = :degrevlex)[1]; ranking(dpr)
Ranking of differential polynomial ring in 3 action indeterminates over ZZ
with action indeterminates partitioned by
[[1, 0, 0], [0, 1, 0], [0, 0, 1]]
and ordering of the indices defined by
[1 1 1 1]
[0 0 0 -1]
[0 0 -1 0]
[0 -1 0 0]
julia> set_ranking!(dpr; partition = [[0,1,1],[1,0,0]], index_ordering_matrix = identity_matrix(ZZ, 4))
Ranking of differential polynomial ring in 3 action indeterminates over ZZ
with action indeterminates partitioned by
[[0, 1, 1], [1, 0, 0]]
and ordering of the indices defined by
[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]
julia> set_ranking!(dpr)
Ranking of differential polynomial ring in 3 action indeterminates over ZZ
with action indeterminates partitioned by
[[1, 1, 1]]
and ordering of the indices defined by
[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]This function is part of the experimental code in Oscar. Please read here for more details.
set_ranking! is also called upon construction with difference_polynomial_ring or differential_polynomial_ring. These constructors allow for the same keywords.
ranking — Method
ranking(dpr::Union{DifferencePolyRing, DifferentialPolyRing}) -> ActionPolyRingRankingReturn the ranking of the jet variables of the difference or differential polynomial ring dpr.
This function is part of the experimental code in Oscar. Please read here for more details.
riquier_matrix — Method
riquier_matrix(r::ActionPolyRingRanking) -> ZZMatrixReturn a Riquier matrix that induces the ranking r of the action polynomial ring A, where r = ranking(A).
This function is part of the experimental code in Oscar. Please read here for more details.
index_ordering_matrix — Method
index_ordering_matrix(r::ActionPolyRingRanking) -> ZZMatrixReturn the matrix inducing the monomial ordering of the multiindices defined by the ranking r of the action polynomial ring A, where r = ranking(A).
This function is part of the experimental code in Oscar. Please read here for more details.
partition — Method
partition(r::ActionPolyRingRanking) -> Vector{Vector{Int}}Return the partition of the action indeterminates defined by the ranking r of the action polynomial ring A, where r = ranking(A).
This function is part of the experimental code in Oscar. Please read here for more details.