#18102: Arithmetic functions
-------------------------------------+-------------------------------------
   Reporter:  jj                     |            Owner:
       Type:  task                   |           Status:  new
   Priority:  major                  |        Milestone:  sage-wishlist
  Component:  number theory          |         Keywords:  arithmetic
  Merged in:                         |  functions
  Reviewers:                         |          Authors:  Jonas Jermann
Work issues:                         |  Report Upstream:  N/A
     Commit:                         |           Branch:
  526e1ae40f94cff95e5dc6926208b831643edfb4|  u/jj/arith_functions
   Stopgaps:                         |     Dependencies:
-------------------------------------+-------------------------------------
 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)
 }}}

 Main issues I see are:
 - 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!)
 - 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?

 I'm all ears for suggestions / better alternatives.

--
Ticket URL: <http://trac.sagemath.org/ticket/18102>
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