Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Basic Structures (I): Rings with Operator(s) #18

Closed
10 tasks done
Antonio-JP opened this issue Oct 5, 2022 · 0 comments · Fixed by #22
Closed
10 tasks done

Basic Structures (I): Rings with Operator(s) #18

Antonio-JP opened this issue Oct 5, 2022 · 0 comments · Fixed by #22
Labels
enhancement New feature or request
Milestone

Comments

@Antonio-JP
Copy link
Owner

Antonio-JP commented Oct 5, 2022

The original implementation on this package included a RingWithOperator class and structures where just 1 operator was available. There was an attempt to include this in an older version of the softwre, but the raise of numerous compatibility issues indicated that a refactoring of the package was necessary and a more systematic approach was needed.

This is the first feature the software must implement and it is critical that all the options regarding these type of rings are completed before moving to any other issue.

Formal definitions

Let $R$ be a ring and $\sigma: R \rightarrow R$ a additive homomorphism (i.e., for all $r,s\in R$ we have $\sigma(r+s) = \sigma(r) + \sigma(s)$. Then we can define the extended ring $R$ with operator $\sigma$ as the pair $(R, \sigma)$ and view is as a complete entity. Hence all the elements of $R$ will know about the operation and this operation should be performed automatically.

The next natural extension (which is necessary almost instantly for useful examples) is when we add several operators at once. Let $\sigma_1,\ldots,\sigma_n$ be additive homomorphisms of $R$ that commute (i.e., for all $i,j$ we have $\sigma_i \circ \sigma_j = \sigma_j \circ \sigma_i$. Then, we can consider the extended ring $R$ with operators $\sigma_1,\ldots,\sigma_n$ as the pair $(R, (\sigma_1,\ldots,\sigma_n))$.

In this notation, we have that $(R,\sigma) = (R,(\sigma))$.

Special cases

There are three special cases of operators (mainly depending on how they behave w.r.t. the multiplication in the ring $R$) that are of particular interest for the many algorithms that are developed for this type of operators:

  • Difference or Shift operators: an operator $\sigma$ is a difference (or shift) operator if $\sigma$ is a ring homomorphism, i.e., for all $r,s \in R$, $\sigma(rs) = \sigma(r)\sigma(s)$.
  • Differential operators: an operator $\partial$ is a differential operator if it satisfies the Leibniz rule, i.e., for all $r,s\in R$ $\partial(rs) = \partial(r) s + r \partial(s)$.
  • $\sigma$-skew derivations: an operator $\delta$ is a $\sigma$-skew derivation w.r.t. a ring homomorphism $\sigma$ if for all $r,s\in R$, $\delta(rs) = \delta(r) s + \sigma(r)\delta(s)$.

The ring of constants

For any of these operators, there is a subring $C\subset R$ called the ring of constants. This definition depends on the type of operator, but it can be paraphrased as follows: the constants are the biggest ring $C \subset R$ such that the operator $\sigma$ is a $C$-linear mapping.

By definition, a map is $C$-linear if for all $c \in C$ and $r,s \in R$ it holds:

  • $\sigma(cr) = c\sigma(r)$,
  • $\sigma(r+s) = \sigma(r) + \sigma(s)$.

Hence, the fact that an operator is $C$-linear implies the following for each of the particular cases:

  • Difference operator $\sigma$: for all $c \in C$, $\sigma(c) = c$.
  • Differential operator $\partial$: for all $c \in C$, $\partial(c) = 0$.
  • $\sigma$-skew derivation $\delta$: for all $c \in C$, $\delta(c) = 0$.

Goals of the issue:

  • Include a description of a new Sage category for Rings with Operators.
  • Include a description of the element and morphism classes for the new category.
  • Code a checker to see whether a map is a shift, derivation or skew-derivation (removed goal: the type is given by the user)
  • Implement a class for wrapping or extend existing rings with special maps.
  • Allow the framework of derivation_module of SageMath for the specific case of derivations (removed goal: we assume the derivation module exist for the ring when using derivations)
  • Allow the computation (given by the user) of the constant ring.
  • Provide tests for difference operators.
  • Provide tests for differential operators.
  • Provide tests for skew-derivations (removed goal: the setting is ready, but there is no implementation for skew-derivations)
  • Provide tests for multiple operators in 1 ring.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant