#18102: Arithmetic functions
-------------------------------------+-------------------------------------
       Reporter:  jj                 |        Owner:
           Type:  enhancement        |       Status:  new
       Priority:  major              |    Milestone:  sage-wishlist
      Component:  number theory      |   Resolution:
       Keywords:  arithmetic         |    Merged in:
  functions                          |    Reviewers:
        Authors:  Jonas Jermann      |  Work issues:
Report Upstream:  N/A                |       Commit:
         Branch:                     |  526e1ae40f94cff95e5dc6926208b831643edfb4
  u/jj/arith_functions               |     Stopgaps:
   Dependencies:                     |
-------------------------------------+-------------------------------------
Description changed by jj:

Old description:

> This ticket is mainly a playground for ideas (for now). Anyone: Feel free
> to take over... :)
>
> I would like to see some way to work with exact arithmetic functions.
> In particular when dealing with series (e.g. Dirichlet series but also
> other series):
> If a good implementation of function spaces is around then a series could
> be stored (in an exact way) by specifying it's coefficient function. I.e.
> allowing/using arithmetic functions as element constructor arguments for
> (Dirichlet) series. Also see http://trac.sagemath.org/ticket/16477 for
> the Dirichlet series ticket.
>
> Nice subspaces are given by the ring of arithmetic functions with
> multiplication by convolution.
> This corresponds to the usual product of the associated Dirichlet series
> (which acts like a Fourier transform of the arithmetic function).
> Other (smaller) subspaces are given by multiplicative or completely
> multiplicative functions.
> One idea might be to use the symbolic ring. But it has trouble with
> "sums" which are absolutely crucial for most operations with arithmetic
> functions.
>
> I tried to start with one possible (quick) POC implementation.
>
> Here is a simple example:
> {{{
> sigma3 = ArithmeticFunction(lambda n: sigma(n,3), lambda n,_:
> "sigma({},3)".format(n), lambda n,_:
> "\\sigma_{{3}}\\left({}\\right)".format(n))
> sigma3^2
> show(sigma3^2)
> (sigma3^2)(5)
> }}}
>
> Some issues:
> - representations of coefficients / functions
> - simplifications of functions/representations:
>   For instance we could group sums into one big sum with many conditions
> over many summation variables.
>   If summation conditions are handled carefully/abstractly this could
> allow some powerful simplifications.
> - comparisons of functions (very hard!):
>   For functions which are built up from well-defined simple functions
> this might work by storing them in
>   some abstract syntax tree and using some sophisticated way to compare
> ASTs (???)
> - finding the right way to go about it (categories/etc)
> - trivial scalar multiplication: How to make/represent it as simple as
> possible?
>
> Clearly a lot of the structure comes from the codomain. If it has a ring
> structure it carries over to the function space and with natural numbers
> as domain we can define a convolution product. An algebra would also
> carry over nicely. What's the right general setup for this?
>
> EDIT: This ticket is mainly about the middle column of attachment:dgf-
> cases.txt
> Ideal would be if there was a way to translate between different
> representations (GS,CF,DS).
>
> I'm all ears for suggestions / better alternatives.

New description:

 This ticket is mainly a playground for ideas (for now). Anyone: Feel free
 to take over... :)

 I would like to see some way to work with exact arithmetic functions.
 In particular when dealing with series (e.g. Dirichlet series but also
 other series):
 If a good implementation of function spaces is around then a series could
 be stored (in an exact way) by specifying it's coefficient function. I.e.
 allowing/using arithmetic functions as element constructor arguments for
 (Dirichlet) series. Also see http://trac.sagemath.org/ticket/16477 for the
 Dirichlet series ticket.

 Nice subspaces are given by the ring of arithmetic functions with
 multiplication by convolution.
 This corresponds to the usual product of the associated Dirichlet series
 (which acts like a Fourier transform of the arithmetic function).
 Other (smaller) subspaces are given by multiplicative or completely
 multiplicative functions.

 One other idea might be to use the symbolic ring. Apparently it supports
 symbolic_sum.

 I tried to start with one possible (quick) POC implementation.

 Here is a simple example:
 {{{
 sigma3 = ArithmeticFunction(lambda n: sigma(n,3), lambda n,_:
 "sigma({},3)".format(n), lambda n,_:
 "\\sigma_{{3}}\\left({}\\right)".format(n))
 sigma3^2
 show(sigma3^2)
 (sigma3^2)(5)
 }}}

 Some issues:
 - representations of coefficients / functions
 - simplifications of functions/representations:
   For instance we could group sums into one big sum with many conditions
 over many summation variables.
   If summation conditions are handled carefully/abstractly this could
 allow some powerful simplifications.
 - comparisons of functions (very hard!):
   For functions which are built up from well-defined simple functions this
 might work by storing them in
   some abstract syntax tree and using some sophisticated way to compare
 ASTs (???)
 - finding the right way to go about it (categories/etc)
 - trivial scalar multiplication: How to make/represent it as simple as
 possible?

 Clearly a lot of the structure comes from the codomain. If it has a ring
 structure it carries over to the function space and with natural numbers
 as domain we can define a convolution product. An algebra would also carry
 over nicely. What's the right general setup for this?

 EDIT: This ticket is mainly about the middle column of attachment:dgf-
 cases.txt
 Ideal would be if there was a way to translate between different
 representations (GS,CF,DS).

 I'm all ears for suggestions / better alternatives.

--

--
Ticket URL: <http://trac.sagemath.org/ticket/18102#comment:3>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to