This is Miura.info, produced by Macaulay2, version 1.24.11

Miura -- Miura curve arithmetic
*******************************

Description
===========

The Miura package realizes arithmetic on the curves such as hyper-elliptic
curves (e.g., y^2=x^5+x+1), C_{ab} curves (e.g., y^3=x^4+2x+1), complete
intersection (e.g. {y^2-x^3-1,z^2-x*y-1}). For the Miura form, the pole orders
should be specified such as 2 and 3 for x and y of an elliptic curve.
Currently, only divisor class group computation is available for the package.
For the elliptic curves, [(P)-(O)]+[(Q)-(O)] = [(P+Q)-(O)] for two points P, Q
and the point O at infinity. For the general nonsingular curves, any divisor
class is uniquely expressed by E-g(O) with E a positive divisor of degree g
(genus). This package reduces the divisor class  group addition to ideal class
group multiplication, and utilizes Groebner basis computation. See
http://arxiv.org/pdf/1512.08040v1.pdf for the detail

Author
======

  * Joe Suzuki (see http://suzuki.bayesnet.org )
    <j-suzuki@sigmath.es.osaka-u.ac.jp>

Version
=======

This documentation describes version 0.2 of Miura.

Source code
===========

The source code from which this documentation is derived is in the file
Miura.m2 (see common/share/Macaulay2/Miura.m2 ).

Exports
=======

  * Functions and commands
      * add -- Add Reduced Ideals
      * double -- Double Reduced Ideal
      * reduced -- Compute Reduced Ideal
      * scalarMultiplication -- Add Reduced Ideal
        Multiple Times
      * setPolynomialRing (missing documentation)
      * setQuotientRing (missing documentation)
  * Methods
      * add(Ideal,Ideal) (missing documentation)
      * double(Ideal) (missing documentation)
      * reduced(Ideal) (missing documentation)
      * scalarMultiplication(Ideal,ZZ) (missing documentation)
      * setPolynomialRing(GaloisField,List,List) (missing documentation)
      * setPolynomialRing(List,List) (missing documentation)
      * setQuotientRing(Ideal) (missing documentation)
      * setQuotientRing(List) (missing documentation)
      * setQuotientRing(RingElement) (missing documentation)
  * Symbols
      * PR (missing documentation)
      * QR (missing documentation)
  * Mutable symbols
      * PR (missing documentation)
      * QR (missing documentation)

For the programmer
==================

The object Miura, is a package (Macaulay2Doc).

add -- Add Reduced Ideals
*************************

Synopsis
========

  * Usage:
        L=add(J,K)
  * Inputs:
      * J, an integral ideal
      * K, an integral ideal
  * Outputs:
      * an ideal (Macaulay2Doc),

Description
===========

The function add computes the reduced ideal of multiplication of two integral
ideals. Each reduced ideal is a representative of its ideal class, and the
addition is executed over the ideal class group.

+-------------------------------------------------------------------------+
|i1 : setPolynomialRing(GF 13, {x,y}, {2,3}); setQuotientRing(y^2-x^3-7*x)|
|                                                                         |
|o2 = QR                                                                  |
|                                                                         |
|o2 : QuotientRing                                                        |
+-------------------------------------------------------------------------+
|i3 : J=ideal(x, y); K=ideal(x-2, y-3); add(J, K)                         |
|                                                                         |
|o3 : Ideal of QR                                                         |
|                                                                         |
|o4 : Ideal of QR                                                         |
|                                                                         |
|o5 = ideal (x + 3, y + 2)                                                |
|                                                                         |
|o5 : Ideal of QR                                                         |
+-------------------------------------------------------------------------+
|i6 : L=J*K; reduced(L)                                                   |
|                                                                         |
|o6 : Ideal of QR                                                         |
|                                                                         |
|o7 = ideal (x + 3, y + 2)                                                |
|                                                                         |
|o7 : Ideal of QR                                                         |
+-------------------------------------------------------------------------+
|i8 : setPolynomialRing(GF 5,{x,y,z},{4,6,5})                             |
|                                                                         |
|o8 = PR                                                                  |
|                                                                         |
|o8 : PolynomialRing                                                      |
+-------------------------------------------------------------------------+
|i9 : setQuotientRing({y^2-x^3-1, z^2-x*y-1})                             |
|                                                                         |
|o9 = QR                                                                  |
|                                                                         |
|o9 : QuotientRing                                                        |
+-------------------------------------------------------------------------+
|i10 : J=ideal(x-2,y-2,z)                                                 |
|                                                                         |
|o10 = ideal (x - 2, y - 2, z)                                            |
|                                                                         |
|o10 : Ideal of QR                                                        |
+-------------------------------------------------------------------------+
|i11 : K=ideal(x-4,y,z-1)                                                 |
|                                                                         |
|o11 = ideal (x + 1, y, z - 1)                                            |
|                                                                         |
|o11 : Ideal of QR                                                        |
+-------------------------------------------------------------------------+
|i12 : add(J, K)                                                          |
|                                                                         |
|                                     2                                   |
|o12 = ideal (z + 2x + 1, y + x + 1, x  - x - 2)                          |
|                                                                         |
|o12 : Ideal of QR                                                        |
+-------------------------------------------------------------------------+

See also
========

  * reduced -- Compute Reduced Ideal
  * double -- Double Reduced Ideal
  * scalarMultiplication -- Add Reduced Ideal
    Multiple Times

Ways to use add:
================

  * add(Ideal,Ideal) (missing documentation)

For the programmer
==================

The object add, is a method function (Macaulay2Doc).

double -- Double Reduced Ideal
******************************

Synopsis
========

  * Usage:
        K=double(J)
  * Inputs:
      * J, an integral ideal
  * Outputs:
      * an ideal (Macaulay2Doc),

Description
===========

The function double computes the reduced ideal of J*J given an integral ideal
J. double(J) and add(J,J) outputs the same but double(J) is often more useful
in practice.

+-----------------------------------------------------------------------------+
|i1 : setPolynomialRing({x,y},{2,3}); setQuotientRing(y^2-x^3-7*x);           |
|                                                                             |
|o3 = ideal (x, y)                                                            |
|                                                                             |
|o3 : Ideal of QR                                                             |
|-----------------------------------------------------------------------------|
|J=ideal(x,y)                                                                 |
+-----------------------------------------------------------------------------+
|i4 : double J                                                                |
|                                                                             |
|o4 = ideal 1                                                                 |
|                                                                             |
|o4 : Ideal of QR                                                             |
+-----------------------------------------------------------------------------+
|i5 : reduced(J*J)                                                            |
|                                                                             |
|o5 = ideal 1                                                                 |
|                                                                             |
|o5 : Ideal of QR                                                             |
+-----------------------------------------------------------------------------+
|i6 : add(J,J)                                                                |
|                                                                             |
|o6 = ideal 1                                                                 |
|                                                                             |
|o6 : Ideal of QR                                                             |
+-----------------------------------------------------------------------------+

See also
========

  * add -- Add Reduced Ideals
  * scalarMultiplication -- Add Reduced Ideal
    Multiple Times

Ways to use double:
===================

  * double(Ideal) (missing documentation)

For the programmer
==================

The object double, is a method function (Macaulay2Doc).

PR
**

For the programmer
==================

The object PR (missing documentation) is a symbol (Macaulay2Doc).

QR
**

For the programmer
==================

The object QR (missing documentation) is a symbol (Macaulay2Doc).

reduced -- Compute Reduced Ideal
********************************

Synopsis
========

  * Usage:
        K=reduced(J)
  * Inputs:
      * J, an integral ideal
  * Outputs:
      * an ideal (Macaulay2Doc),

Description
===========

The function reduced computes the reduced ideal given an integral ideal by
executing inverse twice. The reduced ideal is the ideal that minimizes the pole
order among the ideals in the same class

+-----------------------------------+
|i1 : setPolynomialRing({x,y},{2,3})|
|                                   |
|o1 = PR                            |
|                                   |
|o1 : PolynomialRing                |
+-----------------------------------+
|i2 : setQuotientRing(y^2-x^3-7*x)  |
|                                   |
|o2 = QR                            |
|                                   |
|o2 : QuotientRing                  |
+-----------------------------------+
|i3 : J=ideal(x,y); reduced(J)      |
|                                   |
|o3 : Ideal of QR                   |
|                                   |
|o4 = ideal (x, y)                  |
|                                   |
|o4 : Ideal of QR                   |
+-----------------------------------+

See also
========

  * inverse (Macaulay2Doc) -- compute the inverse

Ways to use reduced:
====================

  * reduced(Ideal) (missing documentation)

For the programmer
==================

The object reduced, is a method function (Macaulay2Doc).

scalarMultiplication -- Add Reduced Ideal Multiple Times
********************************************************

Synopsis
========

  * Usage:
        K=scalarMultiplication(J,m)
  * Inputs:
      * J, an integral ideal
      * m, a nonnegative integer
  * Outputs:
      * an ideal (Macaulay2Doc),

Description
===========

The function scalarMultiplication computes the reduced ideal of an integral
ideal scalarMultiplicationplied by a nonnegative integer

+-----------------------------------------------------------------------+
|i1 : setPolynomialRing(GF 13,{x,y},{2,3}); setQuotientRing(y^2-x^3-7*x)|
|                                                                       |
|o2 = QR                                                                |
|                                                                       |
|o2 : QuotientRing                                                      |
+-----------------------------------------------------------------------+
|i3 : J=ideal(x,y)                                                      |
|                                                                       |
|o3 = ideal (x, y)                                                      |
|                                                                       |
|o3 : Ideal of QR                                                       |
+-----------------------------------------------------------------------+
|i4 : scalarMultiplication(J,5)                                         |
|                                                                       |
|o4 = ideal (x, y)                                                      |
|                                                                       |
|o4 : Ideal of QR                                                       |
+-----------------------------------------------------------------------+
|i5 : setPolynomialRing({x,y}, {2,3})                                   |
|                                                                       |
|o5 = PR                                                                |
|                                                                       |
|o5 : PolynomialRing                                                    |
+-----------------------------------------------------------------------+
|i6 : setQuotientRing(y^2-x^3-7*x)                                      |
|                                                                       |
|o6 = QR                                                                |
|                                                                       |
|o6 : QuotientRing                                                      |
+-----------------------------------------------------------------------+
|i7 : J=ideal(x,y)                                                      |
|                                                                       |
|o7 = ideal (x, y)                                                      |
|                                                                       |
|o7 : Ideal of QR                                                       |
+-----------------------------------------------------------------------+
|i8 : K=ideal(x-2,y-3)                                                  |
|                                                                       |
|o8 = ideal (x - 2, y - 3)                                              |
|                                                                       |
|o8 : Ideal of QR                                                       |
+-----------------------------------------------------------------------+
|i9 : add(J,K)                                                          |
|                                                                       |
|o9 = ideal (x, y)                                                      |
|                                                                       |
|o9 : Ideal of QR                                                       |
+-----------------------------------------------------------------------+
|i10 : scalarMultiplication(K,5)                                        |
|                                                                       |
|o10 = ideal 1                                                          |
|                                                                       |
|o10 : Ideal of QR                                                      |
+-----------------------------------------------------------------------+

See also
========

  * add -- Add Reduced Ideals
  * double -- Double Reduced Ideal

Ways to use scalarMultiplication:
=================================

  * scalarMultiplication(Ideal,ZZ) (missing documentation)

For the programmer
==================

The object scalarMultiplication, is a method function (Macaulay2Doc).

setPolynomialRing
*****************

Ways to use setPolynomialRing:
==============================

  * setPolynomialRing(GaloisField,List,List) (missing documentation)
  * setPolynomialRing(List,List) (missing documentation)

For the programmer
==================

The object setPolynomialRing (missing documentation) is a method function (Macaulay2Doc).

setPolynomialRing for GF -- Set Polynomial Ring for Galois Field given Variables and their Weights
**************************************************************************************************

Synopsis
========

  * Usage:
        setPolynomialRing(kk,v,w)
  * Inputs:
      * kk, any field
      * v, a list of variables
      * w, a list of weights corresponding tov
  * Outputs:
      * a polynomial ring (Macaulay2Doc),

The function setPolynomialRing generates the polynomial ring kk[v] with the
monomial order with respect to weights w over the variables v. The elements in
w should be positive and mutually prime. The numbers of elements in v and w
should coincide. The variable PR keeps the polynomial ring. The monomial order
is specific in Miura. For example, for an elliptic curve, it is based on the
pole order 2i+3j for x^iy^j

+-----------------------------------------+
|i1 : setPolynomialRing(GF 7, {x,y},{2,3})|
|                                         |
|o1 = PR                                  |
|                                         |
|o1 : PolynomialRing                      |
+-----------------------------------------+

setPolynomialRing for QQ -- Set Polynomial Ring for QQ given Variables and their Weights
****************************************************************************************

Synopsis
========

  * Usage:
        setPolynomialRing(v,w)
  * Inputs:
      * v, a list of variables
      * w, a list of weights corresponding tov
  * Outputs:
      * a polynomial ring (Macaulay2Doc),

The function setPolynomialRing generates the polynomial ring kk[v] with the
monomial order with respect to weights w over the variables v. The elements in
w should be positive and mutually prime. The numbers of elements in v and w
coincide. The variable PR keeps the polynomial ring. The monomial order is
specific in Miura. For example, for an elliptic curve, it is based on the pole
order 2i+3j for x^iy^j

+------------------------------------+
|i1 : setPolynomialRing({x,y}, {2,3})|
|                                    |
|o1 = PR                             |
|                                    |
|o1 : PolynomialRing                 |
+------------------------------------+

setQuotientRing
***************

Ways to use setQuotientRing:
============================

  * setQuotientRing(Ideal) (missing documentation)
  * setQuotientRing(List) (missing documentation)
  * setQuotientRing(RingElement) (missing documentation)

For the programmer
==================

The object setQuotientRing (missing documentation) is a method function (Macaulay2Doc).

setQuotientRing given Ideal -- Set Quotient Ring given Ideal
************************************************************

Synopsis
========

  * Usage:
        setQuotientRing(J)
  * Inputs:
      * J, ideal of the curve
  * Outputs:
      * an ideal (Macaulay2Doc),

The function setQuotientRing sets the quotient ring QR of PR over an ideal,
where the ideal may be given by defining equations. The global variables PR and
QR are specified when setting its polynomial ring and quotient ring,
respectively.

+----------------------------------------+
|i1 : setPolynomialRing(GF 7,{x,y},{2,3})|
|                                        |
|o1 = PR                                 |
|                                        |
|o1 : PolynomialRing                     |
+----------------------------------------+
|i2 : setQuotientRing(ideal(y^2-x^3-3*x))|
|                                        |
|o2 = QR                                 |
|                                        |
|o2 : QuotientRing                       |
+----------------------------------------+

setQuotientRing given List of RingElements -- Set Quotient Ring given Multiple Defining Equations
*************************************************************************************************

Synopsis
========

  * Usage:
        setQuotientRing(LL)
  * Inputs:
      * LL, a list of generators of the curve
  * Outputs:
      * an ideal (Macaulay2Doc),

The function setQuotientRing sets the quotient ring QR of PR over an ideal,
where the ideal may be given by defining equations. The global variables PR and
QR are specified when setting its polynomial ring and quotient ring,
respectively.

+--------------------------------------------+
|i1 : setPolynomialRing(GF 5,{x,y,z},{4,6,5})|
|                                            |
|o1 = PR                                     |
|                                            |
|o1 : PolynomialRing                         |
+--------------------------------------------+
|i2 : setQuotientRing({y^2-x^3-1, z^2-x*y-1})|
|                                            |
|o2 = QR                                     |
|                                            |
|o2 : QuotientRing                           |
+--------------------------------------------+

setQuotientRing given RingElement -- Set Quotient Ring given Single Defining Equation
*************************************************************************************

Synopsis
========

  * Usage:
        setQuotientRing(p)
  * Inputs:
      * p, a generator of the curve
  * Outputs:
      * an ideal (Macaulay2Doc),

The function setQuotientRing sets the quotient ring QR of PR over an ideal,
where the ideal may be given by defining equations. The global variables PR and
QR are specified when setting its polynomial ring and quotient ring,
respectively.

+------------------------------------------+
|i1 : setPolynomialRing(GF 7, {x,y}, {2,3})|
|                                          |
|o1 = PR                                   |
|                                          |
|o1 : PolynomialRing                       |
+------------------------------------------+
|i2 : setQuotientRing(y^2-x^3-3*x)         |
|                                          |
|o2 = QR                                   |
|                                          |
|o2 : QuotientRing                         |
+------------------------------------------+