(57)【特許請求の範囲】
【請求項１】
有限体上定義された、
Y 3 + α0 X 4 + α1 XY2 + α2 X 2 Y + α3 X 3 + α4 Y 2 + α5 XY +  α6 X 2 + α7 Y + α8 X + α9 
もしくは、
Y 2 + α0 X 5 + α1 X 2 Y + α2 X 4 + α3 X Y + α4 X 3 + α5 Y + α6 X 2 + α7 X + α8 
もしくは、
Y 2 + α0 X 7 + α1 X 3 Y + α2 X 6 + α3 X 2 Y + α4 X 5 + α5 X Y + α6 X 4 + α7 Y + α8 X 3 + α9 X 2 + α10 X +α11
なる多項式で定義された代数曲線のヤコビ群における加算を実行する演算装置であって、
前記代数曲線を表すパラメータとして定義体位数、単項式順序、係数リストを記述した代数曲線パラメータファイルを入力する手段と、
前記ヤコビ群の要素を表す、前記代数曲線パラメータファイルで指定された代数曲線の座標環のイデアルのグレブナ基底I 1 およびI 2 を入力する手段と、
前記代数曲線パラメータファイルで指定された代数曲線の座標環における、グレブナ基底I 1 が生成するイデアルとグレブナ基底I 2 の生成するイデアルとのイデアル積のグレブナ基底J を演算するイデアル合成手段と、
前記代数曲線パラメータファイルで指定された代数曲線の座標環における、グレブナ基底J が生成するイデアルの逆イデアルと同値なイデアルのうち前記代数曲線パラメータファイルで指定された単項式順序において最小のイデアルのグレブナ基底J * を演算する第一のイデアル縮約手段と、
前記代数曲線パラメータファイルで指定された代数曲線の座標環における、グレブナ基底J * が生成するイデアルの逆イデアルと同値なイデアルのうち前記代数曲線パラメータファイルで指定された単項式順序において最小のイデアルのグレブナ基底J **を演算して出力する第二のイデアル縮約手段とを備え、
前記イデアル合成手段は、
入力された複数のベクトルv 1 ,v2 ,...,vn に対して、掃き出し法を用いて、その全ての１次独立な線形従属関係Σi m j,i v i = 0 (j=1,2,...) を表す複数のベクトル{m1 =(m 1,1 ,m1,2 ,...,m1,n ),m 2 =(m 2,1 ,m2,2 ,...,m2,n ),...}を出力する線形関係導出手段と、
レコード番号フィールド、イデアル型番号フィールド、位数フィールドおよびイデアル型フィールドからなるイデアル型テーブルと、
レコード番号フィールド、位数フィールドおよび単項式リストフィールドからなる単項式リストテーブルと、
レコード番号フィールド、位数フィールド、成分番号リストフィールド、第一ベクトル型フィールド、第二ベクトル型フィールドおよび第三ベクトル型フィールドからなるグレブナ基底構成用テーブルと、
前記代数曲線パラメータファイルを取得し、入力されたグレブナ基底I 1 およびI 2 それぞれに対して、前記イデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルI i (i=1,2) の型と一致するレコードを検索し、検索されたレコードのイデアル型番号フィールドの値N i および位数フィールドの値d i を取得するイデアル型分類手段と、
前記位数フィールドの値d 1 およびd 2 の和d 3 =d1 +d2 を計算し、単項式リストテーブルを参照し前記d 3 を位数フィールドの値に持つレコードR を検索し、前記レコードR の単項式リストフィールドに記述されている単項式のリストM 1 ,M2 ,...を取得し、I 1 とI 2 が異なるときには、前記各単項式M i をI 1 で割った剰余式r i を計算し、前記代数曲線パラメータファイルに記述された単項式順序に従って剰余式r i の係数からなるベクトルw (1) 1 を生成し、さらに、M i をI 2 で割った剰余式s i を計算し、代数曲線パラメータファイルA に記述された単項式順序に従って剰余式ｓi の係数からなるベクトルw (1) 2 を生成し、上記２つのベクトルw (1) 1 とw (1) 2 を連結してベクトルv i を生成し、また、I 1 とI 2 が等しいときには、前記各単項式M i をI 1 で割った剰余式r i を計算し、前記代数曲線パラメータファイルに記述された単項式順序に従って剰余式r i の係数からなるベクトルw (1) 1 を生成し、さらに、前記代数曲線パラメータファイルに記述された係数リストおよび単項式順序を用いて定義多項式F を構成し、多項式M に対してそのX による微分をD X (M) 、Y による微分をD Y (M) と書くとき、多項式D X (Mi ) D Y (F) - D Y (Mi )DX (F) をI 1 で割った剰余式s i を計算し、前記代数曲線パラメータファイルに記述された単項式順序に従って剰余式s i の係数から成るベクトルw (1) 2 を生成し、上記2 つのベクトルw (1) 1 とw (1) 2 を連結してベクトルv i を生成する単項式ベクトル生成手段と、
前記複数のベクトルv 1 ,v2 ,...を前記線形関係導出装置に入力し、出力として複数のベクトルm 1 ,m2 ,...を得て、前記グレブナ基底構成用テーブルを参照し前記値d 3 を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて０であるベクトルが前記複数のベクトルm 1 ,m2 ,...中に存在しないレコードR 2 を検索し、前記複数のベクトルm 1 ,m2 ,.. 中から、前記レコードR 2 の第一ベクトル型に一致するベクトルm を選択し、前記代数曲線パラメータファイルに記述された単項式順序に従ってベクトルm の成分の値を係数とする多項式f 1 を生成し、以下、同様にして、第二べクトル型に一致するベクトルを用いて多項式f 2 を、また第三ベクトル型に一致するベクトルを用いて多項式f 3 を生成し、多項式の集合J={f1 ,f2 ,f3 } を得て、前記グレブナ基底J として出力する基底構成手段とを有することを特徴とするヤコビ群要素加算装置。
【請求項２】
前記第一および第二のイデアル縮約手段の各々は、
入力された複数のベクトルv 1 ,v2 ,...,vn に対して、掃き出し法を用いて、その全ての1 次独立な線形従属関係Σi m j,i v i = 0 (j=1,2,...) を表す複数のベクトル{m1 =(m 1,1 ,m1,2 ,...,m1,n ),m 2 =(m 2,1 ,m2,2 ,...,m2,n ),...}を出力する線形関係導出手段と、
レコード番号フィールド、イデアル型番号フィールド、縮約位数フィールド、およびイデアル型フィールドからなるイデアル型テーブルと、
レコード番号フィールド、位数フィールドおよび単項式リストフィールドからなる単項式リストテーブルと、
レコード番号フィールド、位数フィールド、成分番号リストフィールド、第一ベクトル型フィールド、第二ベクトル型フィールドおよび第三ベクトル型フィールドからなるグレブナ基底構成用テーブルと、
前記代数曲線パラメータファイルを取得し、前記イデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルJ の型と一致するレコードを検索し、検索されたレコードのイデアル型番号フィールドの値N および縮約位数フィールドの値d を取得するイデアル型分類手段と、
前記d が０であるときには、入力イデアルJ を前記グレブナ基底J * として出力し、前記d が０でないときには、前記単項式リストテーブルを参照し前記d を位数フィールドの値に持つレコードR を検索し、前記レコードR の単項式リストフィールドに記述されている単項式のリストM 1 ,M2 ,...を取得し、前記代数曲線パラメータファイルに記述された係数リストおよび単項式順序を用いて定義多項式F を構成し、入力イデアルJ の第一番目の多項式ｆ、第二番目の多項式ｇおよび第三番目の多項式ｈを取得し、前記各単項式M i と多項式g の積M i g の、多項式f およびF による剰余式r i を計算し、前記代数曲線パラメータファイルに記述された単項式順序に従って剰余式r i の係数からなるベクトルw (1) 1 を生成し、さらに、前記各単項式M i と多項式h の積M i h の、多項式f およびF による剰余式s i を計算し、前記代数曲線パラメータファイルに記述された単項式順序に従って剰余式s i の係数からなるベクトルw (1) 2 を生成し、上記２つのベクトルw (1) 1 とw (1) 2 を連結してベクトルv i を生成する多項式ベクトル生成手段と、
前記複数のベクトルv 1 ,v2 ,...を前記線形関係導出手段に入力し、出力として複数のベクトルm 1 ,m2 ,...を得て、前記グレブナ基底構成用テーブルを参照して前記値d を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0 であるベクトルが前記複数のベクトルm 1 ,m2 ,...中に存在しないレコードR 2 を検索し、前記複数のベクトルm 1 ,m2 ,.. 中から、前記レコードR 2 の第一ベクトル型に一致するベクトルm を選択し、
ベクトルm の成分の値を係数とする多項式f 1 を前記代数曲線パラメータファイルに記述された単項式順序に従って生成し、以下、同様にして、第二べクトル型に一致するベクトルを用いて多項式f 2 を生成し、また第三ベクトル型に一致するベクトルを用いて多項式f 3 を生成し、多項式の集合｛f 1 ,f2 ,f3 ｝を得て、前記グレブナ基底J * もしくはJ **として出力する基底構成手段とを有することを特徴とする請求項１記載のヤコビ群要素加算装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はヤコビ群要素加算装置に関し、特に情報セキュリティ技術としての暗号技術である離散対数型暗号の一種である代数曲線のヤコビ群を用いた離散対数型暗号(以下、代数曲線暗号と呼ぶ)技術に関するものである。
【０００２】
【従来の技術】
代数曲線暗号の中で、最も実用化が進んでいるのは、楕円曲線暗号である。しかし、楕円曲線暗号で用いられる楕円曲線は一般の代数曲線に比べて非常に特殊な曲線である。その特殊性を用いた攻撃法が将来発見される危惧がある。そのため、より安全性を確保するためには、より特殊性の低い、一般的な代数曲線を用いることが望ましい。そのような、より一般的な代数曲線を用いることができる代数曲線暗号としてCab曲線暗号が知られている。
【０００３】
しかしながら、楕円曲線暗号にくらべCab曲線暗号は産業界で用いられていない。その大きな理由は、有田 正剛著, Cab 曲線のヤコビアン群加算アルゴリズムとその離散対数型暗号への応用、電子情報通信学会和文論文誌、J82-A巻, 8号, 1291--1299, 1999に示されている、従来のCab曲線のヤコビ群における加算アルゴリズムが楕円曲線のヤコビ群における加算アルゴリズムに比べ、数十倍程度遅いため、Cab曲線暗号では、楕円曲線暗号にくらべ、暗号化復号化の処理効率が著しく悪いためである。
【０００４】
また、原澤 隆一、鈴木 譲著、ア・ファースト・ヤコビアン・グループ・アリスメティック・スキーム・フォー・アルジェブレイク・カーブ・クリプトグラフィ、E84-A巻、1号、pp.130-139, 2001 (Ryuichi HARASAWA, Joe SUZUKI, A Fast Jacobian Group Arithmetic Scheme for Algebraic Curve Cryptography,Vol.E84-A No.1, pp.130-139, 2001)においても、Cab曲線のヤコビ群における加算アルゴリズムが提案されているが、アルゴリズムの漸近的な計算量は与えられているものの、実装実験における実行速度データは示されておらず、また他者による実装実験の報告もなく、現実的にどの程度の実行速度が得られるか不明である。
【０００５】
【発明が解決しようとする課題】
上に見たように、Cab曲線のヤコビ群における加算アルゴリズムの非効率さが当該曲線の暗号の実用化を阻んでおり、よってCab曲線のヤコビ群における加算アルゴリズムを高速化することが要求されている。
本発明はかかる要求に鑑みてなされたものであつて、その目的とするところは、Cab曲線のヤコビ群における加算アルゴリズムを高速化することが可能なヤコビ群要素加算装置を提供することにある。
【０００６】
【課題を解決するための手段】
本発明によるヤコビ群要素加算装置は、有限体上定義された、
Y 3 + α0 X 4 + α1 XY2 + α2 X 2 Y + α3 X 3 + α4 Y 2 + α5 XY +  α6 X 2 + α7 Y + α8 X + α9 
もしくは、
Y 2 + α0 X 5 + α1 X 2 Y + α2 X 4 + α3 X Y + α4 X 3 + α5 Y + α6 X 2 + α7 X + α8 
もしくは、
Y 2 + α0 X 7 + α1 X 3 Y + α2 X 6 + α3 X 2 Y + α4 X 5 + α5 X Y + α6 X 4 + α7 Y + α8 X 3 + α9 X 2 + α10 X +α11
なる多項式で定義された代数曲線のヤコビ群における加算を実行する演算装置であって、
前記代数曲線を表すパラメータとして定義体位数、単項式順序、係数リストを記述した代数曲線パラメータファイルを入力する手段と、
前記ヤコビ群の要素を表す、前記代数曲線パラメータファイルで指定された代数曲線の座標環のイデアルのグレブナ基底I 1 およびI 2 を入力する手段と、
前記代数曲線パラメータファイルで指定された代数曲線の座標環における、グレブナ基底I 1 が生成するイデアルとグレブナ基底I 2 の生成するイデアルとのイデアル積のグレブナ基底J を演算するイデアル合成手段と、
前記代数曲線パラメータファイルで指定された代数曲線の座標環における、グレブナ基底J が生成するイデアルの逆イデアルと同値なイデアルのうち前記代数曲線パラメータファイルで指定された単項式順序において最小のイデアルのグレブナ基底J * を演算する第一のイデアル縮約手段と、
前記代数曲線パラメータファイルで指定された代数曲線の座標環における、グレブナ基底J * が生成するイデアルの逆イデアルと同値なイデアルのうち前記代数曲線パラメータファイルで指定された単項式順序において最小のイデアルのグレブナ基底J **を演算して出力する第二のイデアル縮約手段とを備え、
前記イデアル合成手段は、
入力された複数のベクトルv 1 ,v2 ,...,vn に対して、掃き出し法を用いて、その全ての１次独立な線形従属関係Σi m j,i v i = 0 (j=1,2,...) を表す複数のベクトル{m1 =(m 1,1 ,m1,2 ,...,m1,n ),m 2 =(m 2,1 ,m2,2 ,...,m2,n ),...}を出力する線形関係導出手段と、
レコード番号フィールド、イデアル型番号フィールド、位数フィールドおよびイデアル型フィールドからなるイデアル型テーブルと、
レコード番号フィールド、位数フィールドおよび単項式リストフィールドからなる単項式リストテーブルと、
レコード番号フィールド、位数フィールド、成分番号リストフィールド、第一ベクトル型フィールド、第二ベクトル型フィールドおよび第三ベクトル型フィールドからなるグレブナ基底構成用テーブルと、
前記代数曲線パラメータファイルを取得し、入力されたグレブナ基底I 1 およびI 2 それぞれに対して、前記イデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルI i (i=1,2) の型と一致するレコードを検索し、検索されたレコードのイデアル型番号フィールドの値N i および位数フィールドの値d i を取得するイデアル型分類手段と、
前記位数フィールドの値d 1 およびd 2 の和d 3 =d1 +d2 を計算し、単項式リストテーブルを参照し前記d 3 を位数フィールドの値に持つレコードR を検索し、前記レコードR の単項式リストフィールドに記述されている単項式のリストM 1 ,M2 ,...を取得し、I 1 とI 2 が異なるときには、前記各単項式M i をI 1 で割った剰余式r i を計算し、前記代数曲線パラメータファイルに記述された単項式順序に従って剰余式r i の係数からなるベクトルw (1) 1 を生成し、さらに、M i をI 2 で割った剰余式s i を計算し、代数曲線パラメータファイルA に記述された単項式順序に従って剰余式ｓi の係数からなるベクトルw (1) 2 を生成し、上記２つのベクトルw (1) 1 とw (1) 2 を連結してベクトルv i を生成し、また、I 1 とI 2 が等しいときには、前記各単項式M i をI 1 で割った剰余式r i を計算し、前記代数曲線パラメータファイルに記述された単項式順序に従って剰余式r i の係数からなるベクトルw (1) 1 を生成し、さらに、前記代数曲線パラメータファイルに記述された係数リストおよび単項式順序を用いて定義多項式F を構成し、多項式M に対してそのX による微分をD X (M) 、Y による微分をD Y (M) と書くとき、多項式D X (Mi ) D Y (F) - D Y (Mi )DX (F) をI 1 で割った剰余式s i を計算し、前記代数曲線パラメータファイルに記述された単項式順序に従って剰余式s i の係数から成るベクトルw (1) 2 を生成し、上記2 つのベクトルw (1) 1 とw (1) 2 を連結してベクトルv i を生成する単項式ベクトル生成手段と、
前記複数のベクトルv 1 ,v2 ,...を前記線形関係導出装置に入力し、出力として複数のベクトルm 1 ,m2 ,...を得て、前記グレブナ基底構成用テーブルを参照し前記値d 3 を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて０であるベクトルが前記複数のベクトルm 1 ,m2 ,...中に存在しないレコードR 2 を検索し、前記複数のベクトルm 1 ,m2 ,.. 中から、前記レコードR 2 の第一ベクトル型に一致するベクトルm を選択し、前記代数曲線パラメータファイルに記述された単項式順序に従ってベクトルm の成分の値を係数とする多項式f 1 を生成し、以下、同様にして、第二べクトル型に一致するベクトルを用いて多項式f 2 を、また第三ベクトル型に一致するベクトルを用いて多項式f 3 を生成し、多項式の集合J={f1 ,f2 ,f3 } を得て、前記グレブナ基底J として出力する基底構成手段とを有することを特徴とする。
【０００７】
【作用と原理】
[Cab曲線とそのヤコビ群]
本発明で扱う、Cab曲線Cは、互いに素な２つの自然数aとbに対して、以下の形の多項式F(X,Y)によって定義される非特異な平面曲線である。
F(X,Y) = Ya + c0 Xb + Σci,j Xi Yj.
ただし、上式で添数i,jは0以上の自然数で a i + b j < ab の範囲を動く。また、c0,ci,jは定義体kの元で、c0は0ではないとする。Cab曲線Cは唯一の無限遠点P∞をもち、多項式YとXはそれぞれP∞でb位とa位の唯一の極をもつ。 Cab曲線C上の次数0の因子のなす群をDC0(k)とおき、主因子のなす群をPC(k)とおく。
【０００８】
本発明でその加算アルゴリズムを求めたいヤコビ群JC(k)は、
JC(k) = DC0(k) / PC(k)
と定義される。一方、R=k[X,Y]/FをCab曲線Cの座標環とすると、定義よりCab曲線Cは非特異なので、環Rは整閉整域となり、Dedekind domainである。よって、環Rの0でない分数イデアル全体は群IR(k)をなす。環Rの主イデアルのなす群をPR(k)とおくと、環Rのイデアル類群HR(k)が、
HR(k) = IR(k) / PR(k)
と定義される。
【０００９】
一般に、非特異な代数曲線に対して、曲線上の因子と座標環のイデアルとは同一視することができ、そのヤコビ群とイデアル類群は自然に同型であることが知られている。特に、Cab曲線Cのヤコビ群JC(k)は座標環Rのイデアル類群HR(k)と自然に同型である。アルゴリズムの実装には因子よりもイデアルが便利なので、以下Cab曲線Cのヤコビ群JC(k)は座標環Rのイデアル類群HR(k)として扱う。
【００１０】
[グレブナ基底に関する準備]
イデアル類群HR(k)を対象とした計算ではイデアルのグレブナ基底を用いるので、本節ではそれに関する準備を行う。一般に、多項式環S=k[X1,...,Xn]に対して、その単項式の間の順序’<’であって、積とコンパチブル、すなわちM1 < M2ならば、常にM1 M3 < M2 M3となる整列順序’<’を単項式順序と呼ぶ。本節では以降、多項式環Sに対し、任意の単項式順序’<’が与えられているとする。
Sの多項式fに対して、fに現れる、単項式順序’<’に関する最大の単項式をfのleading monomialと呼び、LM(f)とかく。また、イデアルIに対して、Iに属する多項式のleading monomial全体が生成するイデアルをLM(I)と書く。
【００１１】
多項式f1,...,fsで生成される、SのイデアルI=(f1,...,fs)に対して、{f1,...,fs}が
LM(I) = (LM(f1), ... ,LM(fs))を満たすとき、{f1,...,fs}はイデアルIのグレブナ基底と呼ばれる。多項式環SのイデアルIに対し、LM(I)に属さない単項式(あるいはそのmulti degree)全体Δ(I)はIのデルタ集合と呼ばれる。Δ(I)に含まれる各単項式(のmulti-degree)をプロットすると、凸集合が現れ、その凸集合を囲む格子点がIのグレブナ基底の要素のleading monomialと対応する。また、Δ(I)はk上のベクトル空間S/Iの基底をなす。
【００１２】
非特異アフィン代数曲線Cの座標環R=S/FのイデアルIは、多項式環Sのイデアルで、曲線Cの定義イデアルFを含むものと同一視できる。よって、座標環Rのイデアルに対しても、上のようにグレブナ基底を考えることができる。座標環R=S/Fの0次元イデアルI(すなわち、Iの解集合が有限集合)に対して、k上のベクトル空間S/Iの次元をイデアルIの位数と呼び、δ(I)と書く。定義より直ちに、δ(I)は集合Δ(I)の位数に等しい。また、非特異性の仮定より、δ(IJ)=δ(I)δ(J)となる。 I=(f)がRの主イデアルのときは、δ(I) = -vP∞(f)である。ここで、vP∞(f)は多項式ｆのP∞での付値を表す。
【００１３】
[Cab曲線のヤコビ群加算アルゴリズム その１]
多項式F(X,Y)で定義されたCab曲線Cの座標環R=k[X,Y]/Fを考える。2変数単項式Xm Ynを曲線C上の関数と見なし、P∞における極位数-v P∞(Xm Yn)の大小によって単項式を順序づけた単項式順序をCab順序と呼ぶ。ただし、P∞における極位数が等しいときは、Yの次数が大きい方を大とする。以下、Cab曲線Cの座標環Rの単項式順序としてCab順序を用いる。座標環RのイデアルIに対し、Iに含まれる0でない多項式でそのleading monomialがCab順序で最小である多項式をfIとかく。さらに、I* = (fI) : I ( = { g ∈ R | g・I ⊆ (fI) } )
とおく。
【００１４】
このとき、I,Jを座標環Rの任意の(整)イデアルとすると、(1) IとI**は同値であり、(2) I**はIと同値な(整)イデアルでその位数が最小のものであり、(3) IとJが同値ならばI*=J*であり、とくに、I**=(I**)**である、ことが容易にわかる。座標環RのイデアルIに対して、I**=Iであるとき、Iをreduced idealと呼ぶ。上記(1),(3)より、任意のイデアルは唯一のreduced idealに同値である。すなわち、reduced ideal はイデアル類の代表系をなしている。この性質はCab順序に限らず、任意の単項式順序を用いた場合にも成立するが、Cab順序を用いた場合は、上記(2)より、reduced ideal はそれと同値なイデアルのうち、位数が最小のものとなるという特質を持つ。これは、アルゴリズムの実装に際して利点となる。reduce ideal をイデアル類の代表系として用いて、以下のイデアル類群乗算＝ヤコビ群加算アルゴリズムを得る。
【００１５】
[ヤコビ群加算アルゴリズム１]
入力：座標環Rのreduced ideals I1, I2
出力：イデアル積I1・I2に同値な reduced ideal I3
1. J ← I1・I2
2. J* ← (fJ) : J
3. I3 ← (fJ*) : J*
【００１６】
[イデアルの分類]
上記ヤコビ群加算アルゴリズム１を効率的でかつ実装しやすいプログラムとして実現するために、ヤコビ群加算アルゴリズム１の実行中に現れるイデアルを分類する。以下、簡単のため、C34曲線(すなわち、a=3,b=4としたCab曲線)を対象として説明するが、一般のCab曲線に対しても同様である。C34曲線の種数は3なので、ヤコビ群加算アルゴリズム１の実行中に現れるイデアルの位数は6以下である。それらのC34順序におけるグレブナ基底は位数ごとに以下のように分類される。ただし、以降、イデアルのグレブナ基底にC34曲線Cの定義式Fが現れても、Fは省略して書かない。また、グレブナ基底を構成する各多項式の係数ai,bj,ckは全てkの元である。
【００１７】
(位数6のイデアル)
Iを座標環Rの位数6のイデアルとする。位数の定義より、V=R/Iは定義体k上の6次元ベクトル空間である。イデアルIが表す6点が「一般的な」位置にあるとき、C34順序で最初から6つの単項式1,X,Y,X2,X Y,Y2はそれら6点上で1次独立である。すなわち、単項式1,X,Y,X2,X Y,Y2はベクトル空間Vの基底をなす。このとき、イデアルIをタイプ61のイデアルと呼ぶ。
【００１８】
一般に、イデアルIのデルタ集合Δ(I)はベクトル空間Vの基底と同一視できるので、タイプ61のイデアルIのデルタ集合は
Δ(I) = {(0,0),(1,0),(0,1),(2,0),(1,1),(0,2)}
となる。それらを囲む格子点集合は{(0,3),(1,2),(2,1),(3,0)}である。よって、タイプ61のイデアルIのグレブナ基底は以下の形をもつ。
タイプ61のイデアルのグレブナ基底 = { X3 + a6 Y2 + a5 X Y + a4 X2 + a3 Y + a2 X + a1,
X2 Y + b6 Y2 + b5 X Y + b4 X2 + b3 Y + b2 X + b1,
X Y2 + c6 Y2 + c5 X Y + c4 X2 + c3 Y + c2 X + c1 }
これら3式はそれぞれ格子点(3,0),(2,1),(1,2)に対応する(格子点(0,3)は定義式Fに対応)。一般には、6つの単項式1,X,Y,X2,X Y,Y2は、イデアルIが表す6点上で、すなわちベクトル空間Vにおいて一次独立とは限らない。
【００１９】
まず、Vにおいて、C34順序で最初から5つの単項式1,X,Y,X2,X Yが一次独立であり、6番目の単項式Y2がそれらの線形結合で表される場合を考察する。仮定より、Δ(I)は{(0,0),(1,0),(0,1),(2,0),(1,1)}を含み、(2,0)を含まない位数6の凸集合である。よって、Δ(I) = {(0,0),(1,0),(0,1),(2,0),(1,1),(2,1)} であるか Δ(I) = {(0,0),(1,0),(0,1),(2,0),(1,1),(3,0)}であるかのいずれとなる。Δ(I)が前者のとき、Iをタイプ62のイデアルと呼び、後者の場合、Iをタイプ63のイデアルと呼ぶ。
Δ(I)を囲む格子点集合は、タイプ62のとき{(0,2),(3,0)}であり、タイプ63のとき{(0,2),(2,1),(4,0)}である。よって、グレブナ基底は以下のようになる。
タイプ62のイデアルのグレブナ基底 = {Y2 + a5 X Y + a4 X2 + a3 Y + a2 X + a1,
X3 + b5 X Y + b4 X2 + b3 Y + b2 X + b1 }
これら2式はそれぞれ格子点(0,2),(3,0)に対応する。
【００２０】
タイプ63のイデアルのグレブナ基底 = {Y2 + a5 X Y + a4 X2 + a3 Y + a2 X + a1,
X2 Y + b6 X3 + b5 X Y + b4 X2 + b3 Y + b2 X + b1 }
これら2式はそれぞれ格子点(0,2),(2,1)に対応する。
ただし、タイプ63のイデアルのグレブナ基底には本来、格子点(4,0)に対応する多項式が存在するが、定義式Fと格子点(0,2)に対応する式f=Y2 + a5 X Y + a4 X2 + a3 Y + a2 X + a1から、F- Y fと、ただちに計算できるので、省略している。
【００２１】
次に、Vにおいて、最初から4つの単項式1,X,Y,X2が一次独立であり、5番目の単項式X Y がそれらの線形結合で表されるとする。すなわち、Δ(I)は{(0,0),(1,0),(0,1),(2,0)}を含み、(1,1)を含まない。このとき、Δ(I)が(0,2)を含まないと仮定すると、Δ(I)が位数6をもつには、
Δ(I)={(0,0),(1,0),(0,1),(2,0),(3,0),(4,0)}
となるしかない。ところが、仮定より、Iはleading termがY2である多項式f=Y2+・・・ を含む。するとY f- F = X4 + ・・・ がIに属するので、(4,0)はΔ(I)には属さない。これは矛盾である。以上より、Δ(I)は必ず(0,2)を含むことがわかり、Δ(I)={(0,0),(1,0),(0,1),(2,0),(0,2),(3,0)}となる。このときIをタイプ64のイデアルとよぶ。
【００２２】
タイプ64のイデアルIのデルタ集合Δ(I)を囲む格子点集合は{(0,3),(1,1),(4,0)}である。よって、タイプ64のイデアルIのグレブナ基底は以下のようになる。タイプ64のイデアルのグレブナ基底 = { X Y + a4 X2 + a3 Y + a2 X + a1,
X4 + b6 X3 + b5 Y2 + b4 X2 + b3 Y + b2 X + b1 }
これら2式はそれぞれ格子点(1,1),(4,0)に対応する(格子点(0,3)は定義式Fに対応)。
【００２３】
次に、V=R/Iにおいて、C34順序で最初から3つの単項式1,X,Yが一次独立であり、4番目の単項式X2がそれらの線形結合で表されるとする。このとき、イデアルIにはX2をleading termとする多項式fが含まれ、デルタ集合は、
Δ(I)={(0,0),(1,0),(0,1),(1,1),(0,2),(1,2)}
となり、それらを囲む格子点集合は{(0,3),(2,0)}となるので、Iはfで生成される単項イデアルとなる。このとき、Iをタイプ65のイデアルと呼ぶ。
タイプ65のイデアルのグレブナ基底 = {X2 + a3 Y + a2 X + a1 }
上式は格子点(2,0)に対応する(格子点(0,3)は定義式Fに対応)。
【００２４】
Y(以下の項)をleading termとする多項式fはdeg((f)0) = -vP∞(f)=4 < 6より、位数6のイデアルIに対応する6点で同時に消えることはない。よって、V=R/Iにおいて最初から3つの単項式1,X,Yは必ず一次独立であり、以上で位数6のイデアルの分類は完了した。
【００２５】
(位数5のイデアル)
Iを座標環Rの位数5のイデアルとする。位数5のイデアルも位数6のイデアルと同様にして、以下のようにタイプ51からタイプ54に分類される。
タイプ51のイデアルのグレブナ基底 = { Y2 + a5 X Y + a4 X2 + a3 Y + a2 X + a1,
X3 + b5 X Y + b4 X2 + b3 Y + b2 X + b1,
X2 Y + c5 X Y + c4 X2 + c3 Y + c2 X + c1 }
タイプ52のイデアルのグレブナ基底 = { X Y + a4 X2 + a3 Y + a2 X + a1,
Y2 + b4 X2 + b3 Y + b2 X + b1 }
タイプ53のイデアルのグレブナ基底 = { X Y + a4 X2 + a3 Y + a2 X + a1,
X3 + b5 Y2 + b4 X2 + b3 Y + b2 X + b1 }
タイプ54のイデアルのグレブナ基底 = {X2 + a3 Y + a2 X + a1,
X Y2 + b5 Y2 + b4 X Y + b3 Y + b2 X + b1 }
【００２６】
(位数4のイデアル)
位数4のイデアルIも同様にして、以下のようにタイプ41からタイプ44に分類される。
タイプ41のイデアルのグレブナ基底 = { X Y + a4 X2 + a3 Y + a2 X + a1,
Y2 + b4 X2 + b3 Y + b2 X + b1,
X3 + c4 X2 + c3 Y + c2 X + c1 }
タイプ42のイデアルのグレブナ基底 = { X2 + a3 Y + a2 X + a1,
X Y + b3 Y + b2 X + b1 }
タイプ43のイデアルのグレブナ基底 = { X2 + a3 Y + a2 X + a1,
Y2 + b4 X Y + b3 Y + b2 X + b1 }
タイプ44のイデアルのグレブナ基底 = {Y + a2 X + a1 }
【００２７】
(位数3のイデアル)
位数3のイデアルIも同様にして、以下のようにタイプ31からタイプ33に分類される。
タイプ31のイデアルのグレブナ基底 = {X2 + a3 Y + a2 X + a1,
X Y + b3 Y + b2 X + b1,
Y2 + c3 Y + c2 X + c1 }
タイプ32のイデアルのグレブナ基底 = {Y + a2 X + a1, X3 + b3 X2 + b2 X + b1 }
タイプ33のイデアルのグレブナ基底 = {X + a1}
【００２８】
(位数2のイデアル)
位数2のイデアルIも同様にして、以下のようにタイプ21とタイプ22に分類される。
タイプ21のイデアルのグレブナ基底 = {Y + a2 X + a1, X2 + b2 X + b1 }
タイプ22のイデアルのグレブナ基底 = {X + a1, Y2 + b2 Y + b1 }
【００２９】
(位数1のイデアル)
位数1のイデアルはもちろん以下のタイプ11のみである。
タイプ11のイデアルのグレブナ基底 = {X + a1,Y + b1 }
【００３０】
[注意]
以上のイデアルタイプのうち、タイプ65,44,33は主イデアルであり、ヤコビ群要素として単位元を表す。また、以上のイデアルタイプのうち、reduced なイデアルタイプは31,21,22,11のみである。例えば、タイプ32のイデアルがreducedでないのは以下のようにしてわかる。
【００３１】
Iをタイプ32のイデアルとすると、fI = Y + a2 X + a1
. よって、臀och(I*) = -v∞(fI) -δ(I) = 4 - 3 = 1.
よって、I* はタイプ11なので、fI* = X + a’であり、
臀och(I**) = -v∞(fI*) -δ(I*) = 3 - 1 = 2.
位数が異なることから、I ≠ I**.
【００３２】
[C34曲線のヤコビ群加算アルゴリズム その２]
定義式Fをもつ体k上定義されたC34曲線Cの座標環をR=k[X,Y]/Fとおく。ヤコビ群加算アルゴリズム１をより具体化し、その実行速度を見積もる。ただし、以下では、離散対数型暗号への応用を念頭にして、体kの位数は十分に大きいとする。
【００３３】
(合成操作1)
まず、異なるイデアルI1,I2に対して、ヤコビ群加算アルゴリズム１の第1ステップ、以下合成操作1と呼ぶ、を考察する。すなわち、イデアル積J=I1・I2に対してfJを求める。そのためには、イデアル積Jのグレブナ基底を求めればよい(fJはその第一要素)。C34曲線の種数は3なので、加算対象となるイデアルの位数は3以下である。よって、そのタイプは11,21,22,31,32のいずれかである。ここでは、イデアルI1,I2がともにタイプ31の場合を述べるが、他の場合も同様である。
【００３４】
I1,I2を共にタイプ31の異なるイデアルとする。I1,I2がヤコビ群からランダムに選ばれたとすると、体kの位数は十分に大きいとしているので、イデアルIに対してその解集合をV(I)とかくとき、ほとんどの場合、
V(I1) ∩ V(I2) = φ                                          （１）
である（φは空集合を表す）。条件(１)を満たさない場合も、R1 + R2 = 0となる要素Riを生成し、I1 + I2の代わりに(I1+R1)+(I2+R2)を計算すれば、条件(1)が成り立つ場合に帰着する。また、条件(1)を満たさない場合は、非常に稀である(定義体kのサイズをqとするとき1/q程度)ので、アルゴリズムの効率を評価する際には、条件(1)を満たしている場合のみ考察すればよい。そこで、以下ではI1,I2に対して条件(1)を仮定する。
【００３５】
J=I1 I2をI1とI2のRにおけるイデアル積とする。 I1,I2は共に位数3なのでJの位数は6となる。よって、Jのタイプは61,62,63,64もしくは65である。Jのタイプがそのいずれであるかを決めるには、10個の単項式
1,X,Y,X2,XY,Y2,X3,X2Y,XY2,X4 (2)
の間の剰余環R/Jにおける線形関係を求めればよい。
【００３６】
イデアルIi (i=1,2)はタイプ31なので、
【数１】
0004304937.tif 000002
である。条件(1)より、
【数２】
0004304937.tif 000003
となる。
【００３７】
ここで、v(1)m:v(2)mは2つのベクトルv(i)m (i=1,2)を連結して得られるk上の6次元ベクトルである。よって、式(2)中の10個の単項式mi間のR/Jでの線形関係を求めるためには、ベクトルv(1)mi:v(2)mi (i=1,2,・・・,10)を行とする、以下の10 x 6行列MCの行間の線形関係を求めればよい。
【数３】
0004304937.tif 000004
行列MCの行間の線形関係は、よく知られているように、行縮約変換によって行列MCを三角化することにより得られ、これよりイデアルJのタイプとそのグレブナ基底を得る。詳細は実施例で述べる。
【００３８】
(注意)
イデアルI1,I2に対し、条件(1)が成立しない場合は、行列MCのランクが5以下となる。I1,I2のイデアル積を計算する際、最初はこれらに対して条件(1)を仮定して計算し、行縮約変換の結果、行列MCのランクが5以下であることが判明すれば、R1 + R2 = 0となる要素Riを生成し、I1 + I2の代わりに(I1+R1)+(I2+R2)を計算すればよい。
【００３９】
(合成操作2)
座標環R=k[X,Y]/Fの同じイデアルI1=I,I2=Iに対する、ヤコビ群加算アルゴリズム１の第一ステップ、以下合成操作2と呼ぶ、を考察する。すなわち、イデアル積J=I2に対して、そのグレブナ基底を求め、fJを計算する。イデアルIがタイプ31の場合を述べるが、他の場合も同様である。体kの位数は十分に大きいとしているので、ほとんどの場合、V(I)には多重点はない。 (3)
【００４０】
また、アルゴリズムの効率を評価する際には、条件(3)を満たしている場合のみ考察すればよい。以下ではIに対して条件(3)を仮定する。J=I2はやはり位数6なので、そのグレブナ基底を計算するには、式(1)の単項式間の剰余環R/Jにおける船型関係を求めればよい。イデアルIはタイプ31なので、
【数４】
0004304937.tif 000005
である。また、条件(3)より、多項式f(∈ R)がJ=I2に属するための必要十分条件は、
f ∈ I, fX FY - fY FX ∈ I
である(ここで、多項式fに対してそのXによる微分をfXと書く。fYに関しても同様。)。よって、
【数５】
0004304937.tif 000006
である。ここで、vm : v(mX FY -mY FX)は2つのベクトルvm, v(mX FY -mY FX)を連結して得られるk上の6次元ベクトルである。
結局、上記線形関係を求めるためには、式(1)中の10個の単項式miに対して、k上の6次元ベクトルvmi:v(miX FY -miY FX)を行とする、以下の10 x 6行列MDの行間の線形関係を求めればよい。
【００４１】
【数６】
0004304937.tif 000007
以降は、合成操作1と同様に、行縮約変換によって行列MDを三角化すれば、イデアルJのタイプとそのグレブナ基底が得られる。
【００４２】
(注意)
イデアルIに対し、条件(3)が成立しない場合は、行列MDのランクが5以下となる。I2のグレブナ基底を計算する際、最初は条件(3)を仮定して計算し、行縮約変換の結果、行列MDのランクが5以下であることが判明すれば、R1 + R2 = 0となる要素Riを生成し、I + Iの代わりに(I+R1)+(I+R2)を計算すればよい。
【００４３】
(還元操作)
ヤコビ群加算アルゴリズム１の第2ステップ(および第3ステップ)、以下還元操作と呼ぶ、を考察する。すなわち、位数6以下のイデアルJに対して、J* = fJ:Jのグレブナ基底を求める。以下、Jがタイプ61の場合を述べるが、その他の場合も同様である。
【００４４】
Jはタイプ61なのでそのグレブナ基底は、
{fJ = X3 + a6 Y2 + ・・・, g = X2 Y + b6 Y2 + ・・・, h = X Y2 + c6 Y2 +・・・ }
とかける。定義よりJ* = fJ : Jなので、δ(J*) = -v∞(fJ) _ δ(J) = 3 である。よって、J*はreducedなので、J*はタイプ31のイデアルとなることがわかる。よって、そのグレブナ基底を求めるには、
1,X,Y,X2,XY,Y2 (4)
中の単項式miに対して、Σi di mi g と Σi di mi h がR/fJで同時に0となる線形関係Σi di miを求めればよい。
LM(F)=Y3, LM(fJ) = X3より、
【数７】
0004304937.tif 000008
なので、上記線形関係を求めるためには、式(4)の6個の各単項式miに対して、2つのベクトルw(mi g), w(mi h)を連結して得られるk上の18次元ベクトルw(mi g): w(mi h)を行とする、以下の6 x 18行列MRの行間の線形関係を求めればよい。
【００４５】
【数８】
0004304937.tif 000009
以降は、行縮約変換によって行列MRを三角化すれば、イデアルJ*のグレブナ基底が得られる。ただし、実はほとんどの場合、行列MRそのものではなく、その6 x 3のある部分行列Mrを三角化すれば十分である。これについての詳細は次節で述べる。
【００４６】
(アルゴリズムの演算量)
アルゴリズムの演算量を評価する。定義体の位数をqとおくとき、ヤコビ群のランダムな要素は、確率1/qの例外を除いて、タイプ31のイデアルで表される。また、タイプ31のイデアルに対する合成操作１，2の結果は、確率1/qの例外を除いて、タイプ61のイデアルとなる。よって、アルゴリズムの演算量を評価するには、タイプ31のイデアルを入力したときの合成操作１，２の演算量とタイプ61または31のイデアルを入力したときの還元操作の演算量を評価すればよい。また、以下では、アルゴリズムの演算量は乗算と逆数演算の回数で表す。
まず、合成操作1の演算量をみる。I1,I2をタイプ31のイデアルとする:
I1 = {X2 + a3 Y + a2 X + a1, X Y + b3 Y + b2 X + b1, Y2 + c3 Y + c2 X + c1 }
I2 = {X2 + s3 Y + s2 X + s1, X Y + t3 Y + t2 X + t1, Y2 + u3 Y + u2 X + u1 }
イデアルI1,I2に対して、行列MCは
【数９】
0004304937.tif 000010
と表示される。
【００４７】
ここで、
e10,1 = a12 - a1a22 - 2a2a3b1 - a32c1
e10,2 = 2a1a2 - a23 - 2a2a3b2 - a32c2
e10,3 = 2a1a3 - a22a3 - 2a2a3b3 - a32c3
e10,4 = s12 - s1s22 - 2s2s3t1 - s32u1
e10,5 = 2s1s2 - s23 - 2s2s3t2 - s32u2
e10,6 = 2s1s3 - s22s3 - 2s2s3t3 - s32u3
これより、重複をうまく取り除けば、行列MCは高々44回の乗算で構成できることがわかる。
【００４８】
行列MC’に対する行縮約変換は、その1行目から3行目までがすでに行縮約された形であり、成分が0または1であることに注意すると、3回の割算と高々6 x 6 + 6 x 5 + 6 x 4 = 90回の乗算で実行できる。以上より、合成操作1の演算量は高々逆数演算3、乗算134である。同様にして、合成操作2の演算量は高々逆数演算3、乗算214であることがわかる。行列MDが行列MCより複雑な分、演算量が増えている。
【００４９】
次に、タイプ61のイデアルを入力したときの縮約操作の演算量をみる。Jをタイプ61のイデアルとする:
J = { X3 + a6 Y2 + a5 X Y + a4 X2 + a3 Y + a2 X + a1,
X2 Y + b6 Y2 + b5 X Y + b4 X2 + b3 Y + b2 X + b1,
X Y2 + c6 Y2 + c5 X Y + c4 X2 + c3 Y + c2 X + c1 }
イデアルJに対する行列MRの第7列から第9列を取り出した6 x 3の小行列Mrは
【数１０】
0004304937.tif 000011
となる。
【００５０】
ここで、
e4,1 = -a2 + a42 - a3 a6 + 3 a4 a5 a6 + a52 a62 + b3 - a5 b4 - a4 b5 - a5 a6 b5
e4,2 = -a3 + a4 a5 + a52 a6 + 2 a4 a62 + a5 a63 - a6 b4 - a5 b5 - a62 b5e5,1 = -2 a3 a5 + 2 a4 a52 - a2 a6 + a42 a6 + a53 a6 - a3 a62 + 3 a4 a5 a62 + a52 a63 + b2 - a4 b4 - a5 a6 b4 + a3 b6 - 2 a4 a5 b6 - a52 a6 b6e5,2 = -a2 + a53 - 2 a3 a6 + 2 a4 a5 a6 + 2 a52 a62 + 2 a4 a63 + a5 a64 + b3 - a5 b4 - a62 b4 - a52 b6 - a4 a6 b6 - a5 a62 b6
e6,1 = -2 a3 a4 - 2 a2 a5 + 3 a42 a5 - 4 a3 a5 a6 + 6 a4 a52 a6 - a2 a62 + a42 a62 + 2 a53 a62 - a3 a63 + 3 a4 a5 a63 + a52 a64 + a5 b3 + a3 b5 - 2 a4 a5 b5 - a52 a6 b5 + a2 b6 - a42 b6 + a3 a6 b6 - 3 a4 a5 a6 b6 - a52 a62 b6
e6,2 = -2 a3 a5 + 2 a4 a52 - 2 a2 a6 + a42 a6 + 2 a53 a6 - 3 a3 a62 + 5 a4 a5 a62 + 3 a52 a63 + 2 a4 a64 + a5 a65 + b2 + a6 b3 - a52 b5 - a4 a6 b5 - a5 a62 b5 + a3 b6 - a4 a5 b6 - a52 a6 b6 - 2 a4 a62 b6 - a5 a63 b6e6,3 = -a52 - 2 a4 a6 - 3 a5 a62 - a64 + b4 + a6 b5 + a5 b6 + a62 b6
である。
【００５１】
これより、行列Mrの(2,2)成分d=-a5 - a62 + b6が0でなければ、行列Mrは階数3となる。よって、d ≠ 0のとき、6 x 18行列MRの代わりに、その小行列である6 x 3行列のMrを用いてよい。d = 0となる確率は1/q程度と考えられるので、アルゴリズムの効率を評価するさいにはd ≠ 0としてよい。上式より、重複をうまく取り除けば、行列Mrは高々40回の乗算で構成できることがわかる。行列Mr’に対する行縮約変換は行列Mrがすでに三角行列であり、その(1,1)および(3,3)成分が1であることに注意すると、高々1回の逆数演算と2 x 4 + 2 x 3 = 14回の乗算で実行できることがわかる。以上より、タイプ61のイデアルを入力としたとき、縮約操作の演算量は高々逆数演算1、乗算54である。タイプ31のイデアルを入力としたときも、同様な考察より、縮約操作は高々逆数演算1、乗算16であることがわかる。
【００５２】
以上まとめると、本発明のヤコビ群加算アルゴリズムの演算量は図16 のようになる。図16中I,Mはそれぞれ逆数演算、乗算を表す。楕円曲線上では、(異なる要素の)加算は逆数演算1,乗算3で、2倍算は逆数演算1,乗算4で実行できる。ただし、同じビット長の群を得るには、有限体のビット長はC34曲線の場合の3倍となる。逆数演算の演算量を乗算のそれの20倍とし、逆数演算や乗算の演算量がビット長の2乗のオーダーであるとすると、C34曲線上の加算は楕円曲線上のそれの304/(23 x 9) ≒ 1.47倍、2倍算は384/(24 x 9) ≒1.78倍で実行できることがわかる。
【００５３】
【発明の実施の形態】
以下に、図面を用いて本発明の実施の形態につき詳細に説明する。図1は本発明の実施の形態の機能ブロック図であり、図2は図１のイデアル合成部の例を示すブロック図である。図3は図1の第一及び第二のイデアル縮約部の例を示すブロック図である。
【００５４】
まず、C34曲線を用いた場合の実施例を示す。本実施例では、代数曲線パラメータファイルとして図4の代数曲線パラメータファイルを、イデアル型テーブルとして図5のイデアル型テーブルを、単項式リストテーブルとして図6の単項式リストテーブルを、グレブナ基底構成用テーブルとして図7のグレブナ基底構成用テーブルを用いる。
【００５５】
図1のヤコビ群要素加算装置において、図4の代数曲線パラメータファイルA16および代数曲線パラメータファイルA で指定されたC34曲線のヤコビ群の要素を表す、代数曲線パラメータファイルAで指定された代数曲線の座標環のイデアルのグレブナ基底
I1={X2 + 726 Y + 836 X + 355, X Y + 36 Y + 428 X + 477, Y2 + 746 Y + 425 X + 865}
および
I2={X2 + 838 Y + 784 X + 97, X Y + 602 Y + 450 X + 291, Y2 + 506 Y + 524 X + 497}
が入力されたとする。
【００５６】
まず、イデアル合成部11が、図2に示す機能ブロックの処理の流れにしたがって、上記代数曲線パラメータファイルA、上記グレブナ基底I1およびI2を入力として以下のように動作する。まず、イデアル合成装置11は、図2のイデアル型分類部21において、図5のイデアル型テーブル25を参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルI1の型と一致するレコードを検索し第14レコードを得て、第14レコードのイデアル型番号フィールドの値N1＝31および位数フィールドの値d1=3を取得する。
【００５７】
同様に、イデアル型が入力イデアルI2の型と一致するレコードを検索し第14レコードを得て、第14レコードのイデアル型番号フィールドの値N2＝31および位数フィールドの値d2=3を取得する。
【００５８】
次に、イデアル合成部11は、単項式ベクトル生成部22において、前記位数フィールドの値d1=3およびd2=3の和d3=d1+d2=6を計算し、単項式リストテーブル26を参照し前記d3=6を位数フィールドの値に持つレコードを検索し第1レコードを得て、第1レコードの単項式リストフィールドに記述されている単項式のリスト1, X, Y, X2, X Y, Y2, X3, X2 Y, X Y2, X4を取得する。
【００５９】
I1とI2は異なっているので、前記単項式のリスト1, X, Y, X2, X Y, Y2, X3, X2 Y, X Y2,X4中のそれぞれのMi(1<=i<=10)に対して、MiをI1で割った剰余を計算し、多項式a(i)1 + a(i)2 X + a(i)3 Yを得て、その係数を、代数曲線パラメータファイルAの単項式順序1, X, Y,・・・の順にならべて、ベクトル(a(i)1,a(i)2,a(i)3)を生成する。さらに、MiをI2で割った剰余を計算し、多項式b(i)1 + b(i)2 X + b(i)3 Yを得て、その係数を、代数曲線パラメータファイルAの単項式順序1, X, Y,・・・の順にならべて、ベクトル(b(i)1,b(i)2,b(i)3)を生成し、上記2つのベクトルを連結してベクトルvi=(a(i)1,a(i)2,a(i)3,b(i)1,b(i)2,b(i)3)を生成する。
【００６０】
すなわち、M1 = 1 をI1でわると、
1 = 0・ (X2 + 726 Y + 836 X + 355) + 0・(X Y + 36 Y + 428 X + 477) +0・(Y2 + 746 Y + 425 X + 865) + 1
となるので、剰余として 1 を得て、ベクトル(1,0,0)を生成する。M1 = 1 をI2でわると、
1 = 0・(X2 + 838 Y + 784 X + 97) + 0・(X Y + 602 Y + 450 X + 291) + 0・(Y2 + 506 Y + 524 X + 497) + 1
となるので、剰余として 1 を得て、ベクトル(1,0,0)を生成する。これら2つのベクトルを連結して、ベクトルv1=(1,0,0,1,0,0)を生成する。
【００６１】
次に、M2 = XをI1でわると、
X = 0 ・ (X2 + 726 Y + 836 X + 355) + 0・(X Y + 36 Y + 428 X + 477) +0・(Y2 + 746 Y + 425 X + 865) + X
となるので、剰余として X を得て、ベクトル(0,1,0)を生成する。M2 = X をI2でわると、
1 = 0・(X2 + 838 Y + 784 X + 97) + 0・(X Y + 602 Y + 450 X + 291) + 0・(Y2 + 506 Y + 524 X + 497) + X
となるので、剰余として X を得て、ベクトル(0,1,0)を生成する。これら2つのベクトルを連結して、ベクトルv2=(0,1,0,0,1,0)を生成する。
【００６２】
次に、M3 = YをI1でわると、
Y = 0 ・ (X2 + 726 Y + 836 X + 355) + 0・(X Y + 36 Y + 428 X + 477) +0・(Y2 + 746 Y + 425 X + 865) + Y
となるので、剰余として Y を得て、ベクトル(0,0,1)を生成する。M3 = Y をI2でわると、
Y = 0・(X2 + 838 Y + 784 X + 97) + 0・(X Y + 602 Y + 450 X + 291) + 0・(Y2 + 506 Y + 524 X + 497) + Y
となるので、剰余として Y を得て、ベクトル(0,0,1)を生成する。これら2つのベクトルを連結して、ベクトルv3=(0,0,1,0,0,1)を生成する。
【００６３】
次に、M4 = X2をI1でわると、
X2 = 1 ・ (X2 + 726 Y + 836 X + 355) + 0・(X Y + 36 Y + 428 X + 477) +0・(Y2 + 746 Y + 425 X + 865) + 654 + 173 X + 283 Y
となるので、剰余として 654 + 173 X + 283 Y を得て、ベクトル(654, 173, 283)を生成する。M4 = X2 をI2でわると、
X2 = 1・(X2 + 838 Y + 784 X + 97) + 0・(X Y + 602 Y + 450 X + 291) + 0・(Y2 + 506 Y + 524 X + 497) + 912 + 225 X + 171 Y
となるので、剰余として 912 + 225 X + 171 Y を得て、ベクトル(912, 225, 171)を生成する。これら2つのベクトルを連結して、ベクトルv4=(654, 173, 283, 912, 225, 171)を生成する。
【００６４】
次に、M5 = X YをI1でわると、
X Y = 0 ・ (X2 + 726 Y + 836 X + 355) + 1・(X Y + 36 Y + 428 X + 477) +0・(Y2 + 746 Y + 425 X + 865) + 532 + 581 X + 973 Y
となるので、剰余として 532 + 581 X + 973 Y を得て、ベクトル(532, 581, 973)を生成する。M5 = X Y をI2でわると、
X Y = 0・(X2 + 838 Y + 784 X + 97) + 1・(X Y + 602 Y + 450 X + 291) + 0・(Y2 + 506 Y + 524 X + 497) + 718 + 559 X + 407 Y
となるので、剰余として 718 + 559 X + 407 Y を得て、ベクトル(718,559,407)を生成する。これら2つのベクトルを連結して、ベクトルv5=(532, 581, 973,718,559,407)を生成する。
【００６５】
次に、M6 = Y2 をI1でわると、
Y2 = 0 ・ (X2 + 726 Y + 836 X + 355) + 0・(X Y + 36 Y + 428 X + 477) + 1・(Y2 + 746 Y + 425 X + 865) + 144 + 584 X + 263 Y
となるので、剰余として 144 + 584 X + 263 Y を得て、ベクトル(144,584,263)を生成する。M6 = Y2 をI2でわると、
Y2 = 0・(X2 + 838 Y + 784 X + 97) + 0・(X Y + 602 Y + 450 X + 291) + 1・(Y2 + 506 Y + 524 X + 497) + 512 + 485 X + 503 Y
となるので、剰余として 512 + 485 X + 503 Y を得て、ベクトル(512,485,503)を生成する。これら2つのベクトルを連結して、ベクトルv6=(144,584,263,512,485,503)を生成する。
【００６６】
次に、M7 = X3 をI1でわると、
X3 = (173 + X) ・ (X2 + 726 Y + 836 X + 355) + 283・(X Y + 36 Y + 428 X + 477) + 0・(Y2 + 746 Y + 425 X + 865) + 349 + 269 X + 429 Y
となるので、剰余として 349 + 269 X + 429 Y を得て、ベクトル(349,269,429)を生成する。M7 = X3 をI2でわると、
X3 = (225 + X)・(X2 + 838 Y + 784 X + 97) + 171・(X Y + 602 Y + 450 X + 291) + 0・(Y2 + 506 Y + 524 X + 497) + 53 + 821 X + 109 Y
となるので、剰余として 53 + 821 X + 109 Y を得て、ベクトル(53,821,109)を生成する。これら2つのベクトルを連結して、ベクトルv7=(349,269,429,53,821,109)を生成する。
【００６７】
次に、M8 = X2 Y をI1でわると、
X2 Y = Y・(X2 + 726 Y + 836 X + 355) + 173・(X Y + 36 Y + 428 X + 477) + 283・(Y2 + 746 Y + 425 X + 865) + 609 + 418 X + 243 Y
となるので、剰余として 609 + 418 X + 243 Y を得て、ベクトル(609,418,243)を生成する。M8 = X2 Y をI2でわると、
X2 Y = Y・(X2 + 838 Y + 784 X + 97) + 225・(X Y + 602 Y + 450 X + 291) + 171・(Y2 + 506 Y + 524 X + 497) + 888 + 856 X + 916 Y
となるので、剰余として 888 + 856 X + 916 Y を得て、ベクトル(888,856,916)を生成する。これら2つのベクトルを連結して、ベクトルv8=(609,418,243,888,856,916)を生成する。
【００６８】
次に、M9 = X Y2 をI1でわると、
X Y2 = 0・(X2 + 726 Y + 836 X + 355) + (581+Y)・(X Y + 36 Y + 428 X + 477) + 973・(Y2 + 746 Y + 425 X + 865) + 199 + 720 X + 418 Y
となるので、剰余として 199 + 720 X + 418 Y を得て、ベクトル(199,720,418)を生成する。M9 = X Y2 をI2でわると、
X Y2 = 0・(X2 + 838 Y + 784 X + 97) + (559+Y)・(X Y + 602 Y + 450 X + 291) + 407・(Y2 + 506 Y + 524 X + 497) + 310 + 331 X + 91 Y
となるので、剰余として 310 + 331 X + 91 Y を得て、ベクトル(310,331,91)を生成する。これら2つのベクトルを連結して、ベクトルv9=(199,720,418,310,331,91)を生成する。
【００６９】
次に、M10 = X4 をI1でわると、
X4 = (313 + 173 X + X2 + 283 Y)・(X2 + 726 Y + 836 X + 355) + 45・(X Y + 36 Y + 428 X + 477) + 378・(Y2 + 746 Y + 425 X + 865) +554 + 498 X + 143 Y
となるので、剰余として 554 + 498 X + 143 Y を得て、ベクトル(554,498,143)を生成する。M10 = X4 をI2でわると、
X4 = (78 + 225 X + X2 + 171 Y)・(X2 + 838 Y + 784 X + 97) + 266・(X Y + 602 Y + 450 X + 291) + 989・(Y2 + 506 Y + 524 X + 497) +643 + 522 X + 107 Y
となるので、剰余として 643 + 522 X + 107 Y を得て、ベクトル(643,522,107)を生成する。これら2つのベクトルを連結して、ベクトルv10=(554,498,143,643,522,107)を生成する。以上で、イデアル合成部11の、単項式ベクトル生成部22における処理を終了する。
【００７０】
次に、イデアル合成部11は、基底構成部23において、単項式ベクトル生成部22で生成した、10個の6次元ベクトルv1,v2,v3,v4,v5,v6,v7,v8,v9,v10を線形関係導出部24に入力し、出力として複数の10次元ベクトルm1,m2,...を得る。線形関係導出部24は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術であるので、以下、線形関係導出部24の動作はその概略のみ示す。
【００７１】
線形関係導出部24は、まず、入力された10個の6次元ベクトルv1,v2,v3,v4,v5,v6,v7,v8,v9,v10を順に並べて10x6行列
【数１１】
0004304937.tif 000012
を構成する。
【００７２】
次に、線形関係導出部24は、行列MCに10次元の単位行列を連結し、
【数１２】
0004304937.tif 000013
を得る。
【００７３】
次に、線形関係導出部24は、i行目の定数倍をi+1行目から10行目に加えることで(i=1,2,...,6)、行列M'Cを三角化し以下の行列mを得る。
【数１３】
0004304937.tif 000014
【００７４】
よく知られているように行列mの7から10行目の第7成分以降よりなるベクトルは、入力された10個の6次元ベクトルv1,v2,v3,v4,v5,v6,v7,v8,v9,v10の全ての1次独立な線形従属関係Σi10 mji vi = 0 (j=1,2,...,)を表すベクトル{(m1,1,m1,2,...,m1,n),(m2,1,m2,2,...,m2,n),...}である。線形関係導出部24は、行列mの7行目の第7成分以降よりなるベクトルm1=(28, 132, 31, 271, 469, 166, 1, 0, 0, 0)、行列mの8行目の第7成分以降よりなるベクトルm2=(856, 618, 747, 909, 132, 636, 0, 1, 0, 0)、行列mの9行目の第7成分以降よりなるベクトルm3=(652, 322, 240, 978, 826, 846, 0, 0, 1, 0)および行列mの10行目の第7成分以降よりなるベクトルm4=(333, 346, 980, 935, 824, 614, 0, 0, 0, 1)を出力する。
イデアル合成部11の基底構成部23における処理の説明に戻る。
【００７５】
次に、イデアル合成装置11は、図7のグレブナ基底構成用テーブル27を参照し前記値d3＝6を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0であるベクトルが前記複数のベクトルm1=(28, 132, 31, 271, 469, 166, 1, 0, 0, 0), m2=(856, 618, 747, 909, 132, 636, 0, 1, 0, 0)、m3=(652, 322, 240, 978, 826, 846, 0, 0, 1, 0)およびm4=(333, 346, 980, 935, 824, 614, 0, 0, 0, 1) 中に存在しないレコードを検索する。第１レコードの位数フィールドの値は6であり、第1レコードの成分番号リスト7,8,9,10がすべて0であるベクトルはm1,m2,m3,m4には存在していないので、検索結果として第1レコードが得られる。
【００７６】
さらに第1レコードの第一ベクトル型の値は(*,*,*,*,*,*,1,0,0,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm1=(28, 132, 31, 271, 469, 166, 1, 0, 0, 0)と合致するので、ベクトルm1を、代数曲線パラメータファイルAの単項式順序1, X, Y, X2, X Y, Y2, X3, X2 Y, X Y2, X4の各単項式の係数の列とみなし、多項式f1=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3を生成する。
【００７７】
同様にして、第1レコードの第二ベクトル型の値は(*,*,*,*,*,*,0,1,0,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm2=(856, 618, 747, 909, 132, 636, 0, 1, 0, 0)と合致するので、ベクトルm2を、代数曲線パラメータファイルAの単項式順序1, X, Y, X2, X Y, Y2, X3, X2 Y, X Y2, X4の各単項式の係数の列とみなし、
多項式f2=856 + 618 X + 747 Y + 909 X2 + 132 X Y + 636 Y2 + X2 Y
を生成する。
【００７８】
同様にして、第1レコードの第三ベクトル型の値は(*,*,*,*,*,*,0,0,1,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm3=(652, 322, 240, 978, 826, 846, 0, 0, 1, 0)と合致するので、ベクトルm3を、代数曲線パラメータファイルAの単項式順序1, X, Y, X2, X Y, Y2, X3, X2 Y, X Y2, X4の各単項式の係数の列とみなし、多項式f3=652 + 322 X + 240 Y + 978 X2 + 826 X Y + 846 Y2 + X Y2を生成する。最後に、イデアル合成部11は、多項式の集合J={f1,f2,f3}を構成し、出力する。以上で、イデアル合成部11の動作は終了する。
【００７９】
次に、第一のイデアル縮約部12が、図3に示す機能ブロックの処理の流れにしたがって、図4の代数曲線パラメータファイルAおよびイデアル合成部11が出力したグレブナ基底
J={28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3,
856 + 618 X + 747 Y + 909 X2 + 132 X Y + 636 Y2 + X2 Y,
652 + 322 X + 240 Y + 978 X2 + 826 X Y + 846 Y2 + X Y2}
を入力として以下のように動作する。
【００８０】
まず、イデアル縮約部12は、図3のイデアル型分類部31において、図5のイデアル型テーブル35を参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルJの型と一致するレコードを検索し第1レコードを得て、第1レコードのイデアル型番号フィールドの値N＝61および縮約位数フィールドの値d=3を取得する。次に、イデアル縮約部12は、前記d=3が0でないことを確認し、多項式ベクトル生成部32において、単項式リストテーブル36を参照し前記d=3を位数フィールドの値に持つレコードを検索し第4レコードを得て、第4レコードの単項式リストフィールドに記述されている単項式のリスト1, X, Y, X2, X Y, Y2, X3を取得する。
【００８１】
さらに、イデアル縮約部12は、多項式ベクトル生成部32において、
Jの第1要素f=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3、
第2要素g=856 + 618 X + 747 Y + 909 X2 + 132 X Y + 636 Y2 + X2 Yおよび
第3要素h=652 + 322 X + 240 Y + 978 X2 + 826 X Y + 846 Y2 + X Y2を取得し、代数曲線パラメータファイルAの係数リスト0,7,0,0,0,0,0,0,0,1,1を、代数曲線パラメータファイルAの単項式順序1, X, Y, X2, X Y, Y2, X3, X2 Y, X Y2, X4,Y3の各単項式の係数の列とみなして、定義多項式F=Y3+X4+7Xを生成する。
【００８２】
次に、イデアル縮約部12は、多項式ベクトル生成部32において、前記単項式のリスト1, X, Y, X2, X Y, Y2, X3中のそれぞれのMi(1<=i<=7)に対して、Miと多項式gの積Mi・gの、多項式fおよびFによる剰余式riを計算し、その係数を、代数曲線パラメータファイルAの単項式順序1, X, Y,・・・の順にならべて、ベクトルw(i)1を生成する。さらに、Miと多項式hの積Mi・hの、多項式fおよびFによる剰余式siを計算し、その係数を、代数曲線パラメータファイルAの単項式順序1, X, Y,・・・の順にならべて、ベクトルw(i)2を生成し、上記2つのベクトルw(i)1とw(i)2を連結してベクトルviを生成する。
【００８３】
すなわち、まず、第一番目の単項式M1=1に対して、
1 ・ g = 856 + 618 X + 747 Y + 909 X2 + 132 X Y + 636 Y2 + X2 Yを
f=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、g = 0 ・ f + 0・F + 856 + 618 X + 747 Y + 909 X2 + 132 X Y + 636 Y2 + X2 Yとなるので、剰余856 + 618 X + 747 Y + 909 X2 + 132 X Y + 636 Y2 + X2 Yを得て、ベクトルw(1)1=(856, 618, 747, 909, 132, 636, 1, 0, 0)を生成する。
【００８４】
また、1・h=652 + 322 X + 240 Y + 978 X2 + 826 X Y + 846 Y2 + X Y2をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、h = 0・f + 0・F + 652 + 322 X + 240 Y + 978 X2 + 826 X Y + 846 Y2 + X Y2となるので、剰余652 + 322 X + 240 Y + 978 X2 + 826 X Y + 846 Y2 + X Y2を得て、ベクトルw(1)2=(652, 322, 240, 978, 826, 846, 0, 1, 0)を生成する。そして、ベクトルw(1)1とw(1)2を連結して、ベクトルv1=(856, 618, 747, 909, 132, 636, 1, 0, 0, 652, 322, 240, 978, 826, 846, 0, 1, 0)を得る。
【００８５】
次に、第二番目の単項式M2=Xに対して、X g = X (856 + 618 X + 747 Y + 909 X2 + 132 X Y + 636 Y2 + X2 Y)をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、X g = (319 + 166 X + Y) f + 843 F + 149 + 667 X + 220 X2 + 173 Y + 235 X Y + 709 X2 Y + 492 Y2 + 863 X Y2となるので、剰余149 + 667 X + 220 X2 + 173 Y + 235 X Y + 709 X2 Y + 492 Y2 + 863 X Y2を得て、ベクトルw(2)1=(149, 667, 173,220, 235, 492, 709, 863,0)を生成する。
【００８６】
また、X h=X (652 + 322 X + 240 Y + 978 X2 + 826 X Y + 846 Y2 + X Y2)をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、X h = 978 f + 0・F + 868 + 708 X + 651 X2 + 961 Y + 653 X Y + 826 X2 Y + 101 Y2 + 846 X Y2 + X2 Y2となるので、剰余868 + 708 X + 651 X2 + 961 Y + 653 X Y + 826 X2 Y + 101 Y2 + 846 X Y2 + X2 Y2を得て、ベクトルw(2)2=(868,708,961,651,653,101,826,846,1)を生成する。そして、ベクトルw(2)1とw(2)2を連結して、ベクトルv2=(149, 667, 173,220, 235, 492, 709, 863,0,868,708,961,651,653,101,826,846,1)を得る。
【００８７】
次に、第三番目の単項式M3=Yに対して、Y g = Y (856 + 618 X + 747 Y + 909 X2 + 132 X Y + 636 Y2 + X2 Y)をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、Y g = (826 + 373 X) f + 636 F + 79 + 179 X + 357 X2 + 475 Y + 216 X Y + 529 X2 Y + 855 Y2 + 772 X Y2 + X2 Y2となるので、剰余79 + 179 X + 357 X2 + 475 Y + 216 X Y + 529 X2 Y + 855 Y2 + 772 X Y2 + X2 Y2を得て、ベクトルw(3)1=(79,179,475,357,216,855,529,772,1)を生成する。
【００８８】
また、Y h =Y (652 + 322 X + 240 Y + 978 X2 + 826 X Y + 846 Y2 + X Y2)をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、Y h = (327 + 595 X + 1008 X2 + 469 Y) f + (685 + X) F + 934 + 966 X + 358 X2 + 590 Y + 694 X Y + 473 X2 Y + 31 Y2 + 939 X Y2 + 166 X2 Y2となるので、剰余934 + 966 X + 358 X2 + 590 Y + 694 X Y + 473 X2 Y + 31 Y2 + 939 X Y2 + 166 X2 Y2を得てベクトルw(3)2=(934,966,590,358,694,31,473,939,166)を生成するそして、ベクトルw(3)1とw(3)2を連結して、ベクトルv3=(79,179,475,357,216,855,529,772,1,934,966,590,358,694,31,473,939,166)を得る。
【００８９】
次に、第四番目の単項式M4= X2に対して、X2 g = X2 (856 + 618 X + 747 Y + 909 X2 + 132 X Y + 636 Y2 + X2 Y)をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、X2 g = (645 + 969 X + 166 X2 + 709 Y + X Y) f + (359 + 843 X) F +102 + 241 X + 394 X2 + 513 Y + 647 X Y + 683 X2 Y + 103 Y2 + 1004 X Y2 + 863 X2 Y2
となるので、剰余102 + 241 X + 394 X2 + 513 Y + 647 X Y + 683 X2 Y + 103 Y2 + 1004 X Y2 + 863 X2 Y2を得て、ベクトルw(4)1=(102,241,513,394,647,103,683,1004,863)を生成する。
【００９０】
また、X2 h = X2 (652 + 322 X + 240 Y + 978 X2 + 826 X Y + 846 Y2 + X Y2)をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、X2 h = (725 + 16 X + 782 X2 + 754 Y + 166 X Y + Y2) f + (930 + 227 X + 843 Y) F +889 + 260 X + 560 X2 + 809 Y + 425 X Y + 552 X2 Y + 535 Y2 + 671 X Y2 + 763 X2 Y2となるので、剰余889 + 260 X + 560 X2 + 809 Y + 425 X Y + 552 X2 Y + 535 Y2 + 671 X Y2 + 763 X2 Y2を得て、ベクトルw(4)2=(889, 260, 809, 560, 425, 535, 552, 671, 763)を生成する。そして、ベクトルw(4)1とw(4)2を連結して、ベクトルv4=(102,241,513,394,647,103,683,1004,863,889, 260, 809, 560, 425, 535, 552, 671, 763)を得る。
【００９１】
次に、第五番目の単項式M5= X Yに対して、X Y g = X Y (856 + 618 X + 747 Y + 909 X2 + 132 X Y + 636 Y2 + X2 Y)をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、X Y g = (95 + 3 X + 146 X2 + 457 Y + 166 X Y + Y2) f + (791 + 863 X + 843 Y) F +367 + X + 54 X2 + 403 Y + 361 X Y + 276 X2 Y + 305 Y2 + 600 X Y2 + 689 X2 Y2となるので、剰余367 + X + 54 X2 + 403 Y + 361 X Y + 276 X2 Y + 305 Y2 + 600 X Y2 + 689 X2 Y2を得て、ベクトルw(5)1=(367,1,403,54,361,305,276,600,689)を生成する。
【００９２】
また、X Y h = X Y (652 + 322 X + 240 Y + 978 X2 + 826 X Y + 846 Y2 + X Y2)をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、X Y h = (804 + 648 X + 246 X2 + 1008 X3 + 629 Y + 782 X Y + 166 Y2) f + (421 + 25 X + X2 + 696 Y) F +695 + 924 X + 289 X2 + 851 Y + 210 X Y + 321 X2 Y + 802 Y2 + 522 X Y2 + 278 X2 Y2となるので、剰余695 + 924 X + 289 X2 + 851 Y + 210 X Y + 321 X2 Y + 802 Y2 + 522 X Y2 + 278 X2 Y2を得て、ベクトルw(5)2=(695,924,851,289,210,802,321,522,278)を生成する。そして、ベクトルw(5)1とw(5)2を連結して、ベクトルv5=(367,1,403,54,361,305,276,600,689,695,924,851,289,210,802,321,522,278)を得る。
【００９３】
次に、第六番目の単項式M6= Y2に対して、Y2 g = Y2 (856 + 618 X + 747 Y + 909 X2 + 132 X Y + 636 Y2 + X2 Y)をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、Y2 g = (687 + 214 X + 320 X2 + 1008 X3 + 77 Y + 146 X Y + 166 Y2) f + (981 + 960 X + X2 + 323 Y) F +944 + 384 X + 956 X2 + 763 Y + 737 X Y + 925 X2 Y + 859 Y2 + 416 X Y2 + 814 X2 Y2となるので、剰余944 + 384 X + 956 X2 + 763 Y + 737 X Y + 925 X2 Y + 859 Y2 + 416 X Y2 + 814 X2 Y2を得て、ベクトルw(6)1=(944, 384, 763, 956, 737, 859, 925, 416, 814)を生成する。
【００９４】
また、Y2 h = Y2 (652 + 322 X + 240 Y + 978 X2 + 826 X Y + 846 Y2 + X Y2)をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、Y2 h = (260 + 17 X + 731 X2 + 843 X3 + 382 Y + 246 X Y + 1008 X2 Y + 782 Y2) f (369 + 868 X + 166 X2 + 186 Y + X Y) F +792 + 963 X + 643 X2 + 415 Y + 539 X Y + 887 X2 Y + 438 Y2 + 102 X Y2 + 363 X2 Y2となるので、剰余792 + 963 X + 643 X2 + 415 Y + 539 X Y + 887 X2 Y + 438 Y2 + 102 X Y2 + 363 X2 Y2を得て、ベクトルw(6)2=(792, 963, 415, 643, 539, 438, 887, 102, 363)を生成する。そして、ベクトルw(6)1とw(6)2を連結して、ベクトルv6=(944, 384, 763, 956, 737, 859, 925, 416, 814,792, 963, 415, 643, 539, 438, 887, 102, 363)を得る。
【００９５】
最後に、第七番目の単項式M7= X3に対して、X3 g = X3 (856 + 618 X + 747 Y + 909 X2 + 132 X Y + 636 Y2 + X2 Y)をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、X3 g = (323 + 583 X + 814 X2 + 166 X3 + 96 Y + 689 X Y + X2 Y + 863 Y2) f + (698 + 514 X + 843 X2 + 20 Y) F +37 + 730 X + 831 X2 + 416 Y + 136 X Y + 55 X2 Y + 971 Y2 + 398 X Y2 + 5 X2 Y2となるので、剰余37 + 730 X + 831 X2 + 416 Y + 136 X Y + 55 X2 Y + 971 Y2 + 398 X Y2 + 5 X2 Y2を得て、ベクトルw(7)1=(37,730,416,831,136,971,55,398,5)を生成する。
【００９６】
また、X3 h = X3 (652 + 322 X + 240 Y + 978 X2 + 826 X Y + 846 Y2 + X Y2)をf=28 + 132 X + 31 Y + 271 X2 + 469 X Y + 166 Y2 + X3およびF=Y3+X4+7Xで割ると、X3 h = (449 + 750 X + 363 X2 + 782 X3 + 102 Y + 278 X Y + 166 X2 Y + 763 Y2 + X Y2) f +(784 + 583 X + 227 X2 + 476 Y + 843 X Y) F +545 + 9 X + 173 X2 + 378 Y + 902 X Y + 16 X2 Y + 831 Y2 + 820 X Y2 + 909 X2 Y2となるので、剰余545 + 9 X + 173 X2 + 378 Y + 902 X Y + 16 X2 Y + 831 Y2 + 820 X Y2 + 909 X2 Y2を得て、ベクトルw(7)2=(545,9,378,173,902,831,16,820,909)を生成する。そして、ベクトルw(7)1とw(7)2を連結して、ベクトルv7=(37,730,416,831,136,971,55,398,5, 545,9,378,173,902,831,16,820,909)を得る。以上で、第一のイデアル縮約部12の、多項式ベクトル生成部32における処理を終了する。
【００９７】
次に、第一のイデアル縮約部12は、基底構成部33において、多項式ベクトル生成部32で生成した、7個の18次元ベクトルv1,v2,v3,v4,v5,v6,v7を線形関係導部34に入力し、出力として複数の7次元ベクトルm1,m2,...を得る。線形関係導出部34は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術に属するので、以下、線形関係導出装置34の動作はその概略のみ示す。
【００９８】
線形関係導出部34は、まず、入力された7個の18次元ベクトルv1,v2,v3,v4,v5,v6,v7を順に並べて7x18行列
【数１４】
0004304937.tif 000015
を構成する。
【００９９】
次に、線形関係導出装置34は、行列MRに7次元の単位行列を連結し、
【数１５】
0004304937.tif 000016
を構成する。
【０１００】
次に、線形関係導出装置34は、i行目の定数倍をi+1行目から7行目に加えることで(i=1,2,3)、行列M'Rを三角化し以下の行列mを得る。
【０１０１】
【数１６】
0004304937.tif 000017
よく知られているように行列mの4から7行目の第19成分以降よりなるベクトルは、入力された7個の18次元ベクトルv1,v2,v3,v4,v5,v6,v7の全ての1次独立な線形従属関係Σi7 mji vi = 0 (j=1,2,...,)を表すベクトル{(m1,1,m1,2,...,m1,7),(m2,1,m2,2,...,m2,7),...}である。線形関係導出部34は、行列mの4行目の第19成分以降よりなるベクトルm1=(982, 226, 146, 1, 0, 0, 0)、行列mの5行目の第19成分以降よりなるベクトルm2=(449, 79, 320, 0, 1, 0, 0)、行列mの6行目の第19成分以降よりなるベクトルm3=(544, 564, 195, 0, 0, 1, 0)および行列mの7行目の第19成分以降よりなるベクトルm4= (79, 930, 1004, 0, 0, 0, 1)を出力する。
【０１０２】
第一のイデアル縮約部12の基底構成部33における処理の説明に戻る。次に、このイデアル縮約部12は、図7のグレブナ基底構成用テーブル37を参照し前記値d＝3を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0であるベクトルが前記複数のベクトルm1=(982, 226, 146, 1, 0, 0, 0), m2=(449, 79, 320, 0, 1, 0, 0)、m3=(544, 564, 195, 0, 0, 1, 0)およびm4=(79, 930, 1004, 0, 0, 0, 1) 中に存在しないレコードを検索する。第14レコードの位数フィールドの値は3であり、第14レコードの成分番号リスト4,5,6,7に対応する成分がすべて0であるベクトルはm1,m2,m3,m4には存在していないので、検索結果として第14レコードが得られる。
【０１０３】
さらに、第14レコードの第一ベクトル型の値は(*,*,*,1,0,0,0) であり(記号*はすべての数を表すと解釈する)、これはベクトルm1=(982, 226, 146, 1, 0, 0, 0)と合致するので、ベクトルm1を、代数曲線パラメータファイルAの単項式順序1, X, Y, X2, X Y, Y2, X3の各単項式の係数の列とみなし、多項式f1=982 + 226 X + 146 Y + X2を生成する。
【０１０４】
同様にして、第14レコードの第二ベクトル型の値は(*,*,*,0,1,0,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm2=(449, 79, 320, 0, 1, 0, 0)と合致するので、ベクトルm2を、代数曲線パラメータファイルAの単項式順序1, X, Y, X2, X Y, Y2, X3の各単項式の係数の列とみなし、多項式f2=449 + 79 X + 320 Y + X Yを生成する。
【０１０５】
同様にして、第14レコードの第三ベクトル型の値は(*,*,*,0,0,1,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm3=(544, 564, 195, 0, 0, 1, 0)と合致するので、ベクトルm3を、代数曲線パラメータファイルAの単項式順序1, X, Y, X2, X Y, Y2, X3の各単項式の係数の列とみなし、多項式f3=544 + 564 X + 195 Y + Y2を生成する。
【０１０６】
最後に、イデアル縮約部12は、多項式の集合
J*={f1=982 + 226 X + 146 Y + X2, f2=449 + 79 X + 320 Y + X Y, f3=544 + 564 X + 195 Y + Y2}
を構成し、出力する。以上で、第一のイデアル縮約部12の動作は終了する。
【０１０７】
次に、第二のイデアル縮約部13が、図3に示す機能ブロック処理の流れに従って、図4の代数曲線パラメータファイルA30および第一のイデアル縮約部12が出力したグレブナ基底
J*= {982 + 226 X + 146 Y + X2, 449 + 79 X + 320 Y + X Y, 544 + 564 X + 195 Y + Y2}
を入力として以下のように動作する。まず、第二のイデアル縮約部13は、図3のイデアル型分類部31において、図5のイデアル型テーブル35を参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルJ*の型と一致するレコードを検索し第14レコードを得て、第14レコードのイデアル型番号フィールドの値N＝31および縮約位数フィールドの値d=3を取得する。
【０１０８】
次に、イデアル縮約部13は、前記d=3が0でないことを確認し、多項式ベクトル生成部32において、単項式リストテーブル36を参照し前記d=3を位数フィールドの値に持つレコードを検索し第4レコードを得て、第4レコードの単項式リストフィールドに記述されている単項式のリスト1, X, Y, X2, X Y, Y2, X3を取得する。さらに、イデアル縮約部13は、J*の第1要素f=982 + 226 X + 146 Y + X2、第2要素g=449 + 79 X + 320 Y + X Yおよび第3要素h=544 + 564 X + 195 Y + Y2を取得し、代数曲線パラメータファイルAの係数リスト0,7,0,0,0,0,0,0,0,1,1を、代数曲線パラメータファイルAの単項式順序1, X, Y, X2, X Y, Y2, X3, X2 Y, X Y2, X4,Y3の各単項式の係数の列とみなして、定義多項式F=Y3+X4+7Xを生成する。
【０１０９】
次に、イデアル縮約部13は、前記単項式のリスト1, X, Y, X2, X Y, Y2, X3中のそれぞれのMi(1<=i<=7)に対して、Miと多項式gの積Mi gの、多項式fおよびFによる剰余式riを計算し、その係数を、代数曲線パラメータファイルAの単項式順序1, X, Y,・・・の順にならべて、ベクトルw(i)1を生成する。さらに、Miと多項式hの積Mi hの、多項式fおよびFによる剰余式siを計算し、その係数を、代数曲線パラメータファイルAの単項式順序1, X, Y,・・・の順にならべて、ベクトルw(i)2を生成し、上記2つのベクトルw(i)1とw(i)2を連結してベクトルviを生成する。
【０１１０】
すなわち、まず、第一番目の単項式M1=1に対して、1・g = 449 + 79 X + 320 Y + X Yをf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、g = 0・f + 0・F + 449 + 79 X + 320 Y + X Yとなるので、剰余449 + 79 X + 320 Y + X Yを得て、ベクトルw(1)1=(449, 79, 320, 1,0,0)を生成する。また、1・h=544 + 564 X + 195 Y + Y2をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、h = 0・f + 0・F + 544 + 564 X + 195 Y + Y2
となるので、剰余544 + 564 X + 195 Y + Y2を得て、ベクトルw(1)2=(544, 564, 195, 0,1,0)を生成する。そして、ベクトルw(1)1とw(1)2を連結して、ベクトルv1=(449, 79, 320, 1,0,0, 544, 564, 195, 0,1,0)を得る。
【０１１１】
次に、第二番目の単項式M2=Xに対して、X g = X (449 + 79 X + 320 Y + X Y)をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、X g = (79 + Y) f + 0・F + 115 + 757 X + 601 Y + 94 X Y + 863 Y2となるので、剰余115 + 757 X + 601 Y + 94 X Y + 863 Y2を得て、ベクトルw(2)1=(115,757,601,94,863,0)を生成する。
【０１１２】
また、X h=X (544 + 564 X + 195 Y + Y2)をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、X h = 564 f + 0・F + 93 + 214 X + 394 Y + 195 X Y + X Y2となるので、剰余93 + 214 X + 394 Y + 195 X Y + X Y2を得て、ベクトルw(2)2=(93, 214, 394, 195, 0, 1)を生成する。そして、ベクトルw(2)1とw(2)2を連結して、ベクトルv2=(115,757,601,94,863,0, 93, 214, 394, 195, 0, 1)を得る。
【０１１３】
次に、第三番目の単項式M3=Yに対して、Y g = Y (449 + 79 X + 320 Y + X Y)をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、Y g = 0・f + 0・F + 449 Y + 79 X Y + 320 Y2 + X Y2となるので、剰余449 Y + 79 X Y + 320 Y2 + X Y2を得て、ベクトルw(3)1=(0, 0, 449, 79, 320, 1)を生成する。
【０１１４】
また、Y h =Y (544 + 564 X + 195 Y + Y2)をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、Y h = (356 + 226 X + 1008 X2 + 146 Y) f + 1・F + 531 + 305 X + 942 Y + 157 X Y + 68 Y2となるので、剰余531 + 305 X + 942 Y + 157 X Y + 68 Y2を得て、ベクトルw(3)2=(531, 305, 942, 157, 68, 0)を生成する。そして、ベクトルw(3)1とw(3)2を連結して、ベクトルv3=(0, 0, 449, 79, 320, 1, 531, 305, 942, 157, 68, 0)を得る。
【０１１５】
次に、第四番目の単項式M4=X2に対して、X2 g = X2 (449 + 79 X + 320 Y + X Y)をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、X2 g = (757 + 79 X + 94 Y + X Y) f + 0・F + 259 + 563 X + 988 Y +  546 X Y + 402 Y2 + 863 X Y2となるので、剰余259 + 563 X + 988 Y + 546 X Y + 402 Y2 + 863 X Y2を得て、ベクトルw(4)1=(259, 563, 988, 546, 402, 863)を生成する。
【０１１６】
また、X2 h =X2 (544 + 564 X + 195 Y + Y2)をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、X2 h = (706 + 865 X + 146 X2 + 68 Y + Y2) f + 863 F + 900 + 27 X + 669 Y + 611 X Y + 189 Y2 + 783 X Y2となるので、剰余900 + 27 X + 669 Y + 611 X Y + 189 Y2 + 783 X Y2を得て、ベクトルw(4)2=(900, 27, 669, 611, 189, 783)を生成する。そして、ベクトルw(4)1とw(4)2を連結して、ベクトルv4=(259, 563, 988, 546, 402, 863, 900, 27, 669, 611, 189, 783)を得る。
【０１１７】
次に、第五番目の単項式M5= X Yに対して、X Y g = X Y (449 + 79 X + 320 Y + X Y)をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、X Y g = (492 + 301 X + 146 X2 + 961 Y + Y2) f + 863 F +167 + 875 X + 529 Y + 648 X Y + 981 Y2 + 94 X Y2となるので、剰余167 + 875 X + 529 Y + 648 X Y + 981 Y2 + 94 X Y2を得て、ベクトルw(5)1=(167, 875, 529, 648, 981, 94)を生成する。
【０１１８】
また、X Y h = X Y (544 + 564 X + 195 Y + Y2)をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、X Y h = (305 + 356 X + 226 X2 + 1008 X3 + 157 Y + 146 X Y) f + X F +163 + 213 X + 69 Y + 775 X Y + 285 Y2 + 68 X Y2となるので、剰余163 + 213 X + 69 Y + 775 X Y + 285 Y2 + 68 X Y2を得て、ベクトルw(5)2=(163, 213, 69, 775, 285, 68)を生成する。そして、ベクトルw(5)1とw(5)2を連結して、ベクトルv5=(167, 875, 529, 648, 981, 94, 163, 213, 69, 775, 285, 68)を得る。
【０１１９】
次に、第六番目の単項式M6= Y2に対して、Y2 g = Y2 (449 + 79 X + 320 Y + X Y)をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、Y2 g = (208 + 28 X + 915 X2 + 1008 X3 + 908 Y + 146 X Y) f + (320 + X) F +571 + 949 X + 202 Y + 482 X Y + 60 Y2 + 961 X Y2となるので、剰余571 + 949 X + 202 Y + 482 X Y + 60 Y2 + 961 X Y2を得て、ベクトルw(6)1=(571, 949, 202, 482, 60, 961)を生成する。
【０１２０】
また、Y2 h = Y2 (544 + 564 X + 195 Y + Y2)をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、Y2 h = (1001 + 233 X + 941 X2 + 194 Y + 226 X Y + 1008 X2 Y + 146 Y2) f + (68 + Y) F +793 + 560 X + 352 Y + 881 X Y + 378 Y2 + 157 X Y2となるので、剰余793 + 560 X + 352 Y + 881 X Y + 378 Y2 + 157 X Y2を得て、ベクトルw(6)2=(793, 560, 352, 881, 378, 157)を生成する。そして、ベクトルw(6)1とw(6)2を連結して、ベクトルv6=(571, 949, 202, 482, 60, 961, 793, 560, 352, 881, 378, 157)を得る。
【０１２１】
最後に、第七番目の単項式M7= X3に対して、X3 g = X3 (449 + 79 X + 320 Y + X Y)をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、X3 g = (370 + 198 X + 961 X2 + 926 Y + 94 X Y + X2 Y + 863 Y2) f + 127 F +909 + 548 X + 243 Y + 460 X Y + 104 Y2 + 101 X Y2となるので、剰余909 + 548 X + 243 Y + 460 X Y + 104 Y2 + 101 X Y2を得て、ベクトルw(7)1=(909, 548, 243, 460, 104, 101)を生成する。
【０１２２】
また、X3 h = X3 (544 + 564 X + 195 Y + Y2)をf=982 + 226 X + 146 Y + X2およびF=Y3+X4+7Xで割ると、X3 h = (834 + 283 X + 157 X2 + 146 X3 + 52 Y + 68 X Y + 783 Y2 + X Y2) f + (708 + 863 X) F +320 + 866 X + 720 Y + 225 X Y + 432 Y2 + 815 X Y2となるので、剰余320 + 866 X + 720 Y + 225 X Y + 432 Y2 + 815 X Y2を得て、ベクトルw(7)2=(320, 866, 720, 225, 432, 815)を生成する。そして、ベクトルw(7)1とw(7)2を連結して、ベクトルv7=(909, 548, 243, 460, 104, 101, 320, 866, 720, 225, 432, 815)を得る。以上で、第二のイデアル縮約部13の多項式ベクトル生成部32における処理を終了する。
【０１２３】
次に、第二のイデアル部装置13は、基底構成部33において、多項式ベクトル生成部32で生成した、7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7を線形関係導出部34に入力し、出力として複数の7次元ベクトルm1,m2,...を得る。線形関係導出部34は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術に属するので、以下、線形関係導出部34の動作はその概略のみ示す。
【０１２４】
線形関係導出部34は、まず、入力された7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7を順に並べて7x12行列
【数１７】
0004304937.tif 000018
を構成する。
【０１２５】
次に、線形関係導出装置34は、行列MRに7次元の単位行列を連結し、
【数１８】
0004304937.tif 000019
を構成する。
【０１２６】
次に、線形関係導出装置34は、i行目の定数倍をi+1行目から7行目に加えることで(i=1,2,3)、行列M'Rを三角化し以下の行列mを得る。
【数１９】
0004304937.tif 000020
【０１２７】
よく知られているように行列mの4から7行目の第13成分以降よりなるベクトルは、入力された7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7の全ての1次独立な線形従属関係Σi7 mji vi = 0 (j=1,2,...,)を表すベクトル{(m1,1,m1,2,...,m1,n),(m2,1,m2,2,...,m2,n),...}である。線形関係導出部34は、行列mの4行目の第13成分以降よりなるベクトルm1=(982, 226, 146, 1, 0, 0, 0)、行列mの5行目の第13成分以降よりなるベクトルm2=(53, 941, 915, 0, 1, 0, 0)、行列mの6行目の第13成分以降よりなるベクトルm3=(394, 852, 48, 0, 0, 1, 0)および行列mの7行目の第13成分以降よりなるベクトルm4=(382, 194, 908, 0, 0, 0, 1)を出力する。
【０１２８】
第二のイデアル縮約部13の基底構成部33における処理の説明に戻る。次に、第二のイデアル縮約部13は、図7のグレブナ基底構成用テーブル37を参照し前記値d＝3を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0であるベクトルが前記複数のベクトルm1=(982, 226, 146, 1, 0, 0, 0), m2=(53, 941, 915, 0, 1, 0, 0)、m3=(394, 852, 48, 0, 0, 1, 0)およびm4=(382, 194, 908, 0, 0, 0, 1)中に存在しないレコードを検索する。第14レコードの位数フィールドの値は3であり、第14レコードの成分番号リスト4,5,6,7に対応する成分がすべて0であるベクトルはm1,m2,m3,m4には存在していないので、検索結果として第14レコードが得られる。
【０１２９】
さらに第14レコードの第一ベクトル型の値は(*,*,*,1,0,0,0) であり(記号*はすべての数を表すと解釈する)、これはベクトルm1=(982, 226, 146, 1, 0, 0, 0)と合致するので、ベクトルm1を、代数曲線パラメータファイルAの単項式順序1, X, Y, X2, X Y, Y2, X3の各単項式の係数の列とみなし、多項式f1=982 + 226 X + 146 Y + X2を生成する。
【０１３０】
同様にして、第14レコードの第二ベクトル型の値は(*,*,*,0,1,0,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm2=(53, 941, 915, 0, 1, 0, 0)と合致するので、ベクトルm2を、代数曲線パラメータファイルAの単項式順序1, X, Y, X2, X Y, Y2, X3の各単項式の係数の列とみなし、多項式f2=53 + 941 X + 915 Y + X Yを生成する。
【０１３１】
同様にして、第14レコードの第三ベクトル型の値は(*,*,*,0,0,1,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm3=(394, 852, 48, 0, 0, 1, 0)と合致するので、ベクトルm3を、代数曲線パラメータファイルAの単項式順序1, X, Y, X2, X Y, Y2, X3の各単項式の係数の列とみなし、多項式f3=394 + 852 X + 48 Y + Y2を生成する。最後に、イデアル縮約装置13は、多項式の集合J**={f1=982 + 226 X + 146 Y + X2, f2=53 + 941 X + 915 Y + X Y, f3=394 + 852 X + 48 Y + Y2}を構成し、出力する。以上で、第二のデアル縮約部13の動作は終了する。
【０１３２】
最後に、図1のヤコビ群加算装置において、第二のイデアル縮約部13の出力したグレブナ基底J**= {982 + 226 X + 146 Y + X2, 53 + 941 X + 915 Y + X Y, 394 + 852 X + 48 Y + Y2}が出力装置より出力される。
次に、C27曲線を用いた場合の実施例を示す。本実施例では、代数曲線パラメータファイルとして図8の代数曲線パラメータファイルを、イデアル型テーブルとして図9のイデアル型テーブルを、単項式ストテーブルとして図10の単項式リストテーブルを、グレブナ基底構成用テーブルとして図11のグレブナ基底構成用テーブルを用いる。
【０１３３】
図1のヤコビ群要素加算装置において、図8の代数曲線パラメータファイルAおよび代数曲線パラメータファイルA で指定されたC27曲線のヤコビ群の要素を表す、代数曲線パラメータファイルAで指定された代数曲線の座標環のイデアルのグレブナ基底
I1 = {689 + 623 X + 130 X2 + X3, 568 + 590 X + 971 X2 + Y}
および
I2 = {689 + 623 X + 130 X2 + X3, 568 + 590 X + 971 X2 + Y}
が入力されたとする。
【０１３４】
まず、イデアル合成部11が、図2に示す機能ブロックの処理の流れにしたがって、図8の代数曲線パラメータファイルA、上記グレブナ基底I1およびI2を入力として以下のように動作する。イデアル合部11は、まず、図2のイデアル型分類部21において、図9のイデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルI1の型と一致するレコードを検索し第11レコードを得て、第11レコードのイデアル型番号フィールドの値N1＝31および位数フィールドの値d1=3を取得する。同様に、イデアル型が入力イデアルI2の型と一致するレコードを検索し第11レコードを得て、第11レコードのイデアル型番号フィールドの値N2＝31および位数フィールドの値d2=3を取得する。
【０１３５】
次に、イデアル合成部11は、単項式ベクトル生成部22において、前記位数フィールドの値d1=3およびd2=3の和d3=d1+d2=6を計算し、単項式リストテーブルを参照し前記d3=6を位数フィールドの値に持つレコードを検索し第1レコードを得て、第1レコードの単項式リストフィールドに記述されている単項式のリスト1, X, X2, X3, Y, X4, XY, X5, X2 Y,X6を取得する。I1とI2は同一なので、前記単項式のリスト1, X, X2, X3, Y, X4, XY, X5, X2 Y,X6中のそれぞれのMi(1<=i<=10)に対して、MiをI1で割った剰余を計算し、多項式a(i)1 + a(i)2 X + a(i)3 X2を得て、その係数を、代数曲線パラメータファイルAの単項式順序1, X, X2,・・・の順にならべて、ベクトルw(i)1=(a(i)1,a(i)2,a(i)3)を生成する。
【０１３６】
さらに、図8の代数曲線パラメータファイルAに記述された係数リスト0,7,0,0,0,0,0,0,0,0,0,1,1を、図8の代数曲線パラメータファイルAに記述された単項式順序1, X, X2, X3, Y, X4, XY, X5, X2 Y, X6, X3 Y, X7, Y2の各単項式の係数列とみなし、定義多項式F=Y2 + X7 + 7 Xを構成し、多項式Mに対してそのXによる微分をDX(M)、Yによる微分をDY(M)と書くとき、多項式DX(Mi) DY(F) - DY(Mi)DX(F)をI1で割った剰余を計算し、多項式b(i)1 + b(i)2 X + b(i)3 X2を得て、その係数を、代数曲線パラメータファイルAの単項式順序1, X, X2,・・・の順にならべて、ベクトルw(i)2=(b(i)1,b(i)2,b(i)3)を生成し、上記2つのベクトルw(i)1とw(i)2を連結してベクトルvi=(a(i)1,a(i)2,a(i)3,b(i)1,b(i)2,b(i)3)を生成する。すなわち、M1 = 1 をI1でわると、1 = 0 ・(689 + 623 X + 130 X2 + X3) + 0・(568 + 590 X + 971 X2 + Y) + 1となるので、剰余として 1 を得て、ベクトルw(1)1=(1,0,0)を生成する。さらに、DX(1)DY(F) _ DY(1)DX(F) = 0 をI1で割ると、0となるので、剰余として 0を得て、ベクトルw(1)2=(0,0,0)を生成する。w(1)1とw(1)2を連結して、ベクトルv1=(1,0,0,0,0,0)を生成する。
【０１３７】
次に、M2 = X をI1でわると、X = 0・(689 + 623 X + 130 X2 + X3) + 0・(568 + 590 X + 971 X2 + Y) + Xとなるので、剰余として X を得て、ベクトルw(2)1=(0,1,0)を生成する。さらに、DX(X)DY(F) _ DY(X)DX(F) = DY(F) = 2 Y をI1でわると、2 Y = 0・(689 + 623 X + 130 X2 + X3) + 2 (568 + 590 X + 971 X2 + Y) + 882 + 838 X + 76 X2となるので、剰余として882 + 838 X + 76 X2を得て、ベクトルw(2)2=(882,838,76)を生成する。w(2)1とw(2)2を連結して、ベクトルv2=(0,1,0, 882,838,76)を生成する。
【０１３８】
次に、M3 = X2 をI1でわると、X2 = 0・(689 + 623 X + 130 X2 + X3) + 0・(568 + 590 X + 971 X2 + Y) + X2となるので、剰余として X2 を得て、ベクトルw(3)1=(0,0,1)を生成する。さらに、DX(X2)DY(F) _ DY(X2)DX(F) = 4 X Y をI1でわると、4 X Y = 152 (689 + 623 X + 130 X2 + X3) + 4 X (568 + 590 X + 971 X2 + Y) + 208 + 905 X + 78 X2となるので、剰余として208 + 905 X + 78 X2を得て、ベクトルw(3)2=(208,905,78)を生成する。w(3)1とw(3)2を連結して、ベクトルv3=(0,0,1, 208,905,78)を生成する。
【０１３９】
次に、M4 = X3 をI1でわると、X3 = 1・(689 + 623 X + 130 X2 + X3) + 0・(568 + 590 X + 971 X2 + Y) + 320 + 386 X + 879 X2となるので、剰余として 320 + 386 X + 879 X2 を得て、ベクトルw(4)1=(320,386, 879)を生成する。さらに、DX(X3)DY(F) _ DY(X3)DX(F) = 6 X2 Y をI1でわると、6 X2 Y = (117 + 228 X)(689 + 623 X + 130 X2 + X3) + 6 X2 (568 + 590 X + 971 X2 + Y) + 107 + 69 X + 778 X2となるので、剰余として107 + 69 X + 778 X2を得て、ベクトルw(4)2=(107,69,778)を生成する。w(4)1とw(4)2を連結して、ベクトルv4=(320,386, 879, 107,69,778)を生成する。
【０１４０】
次に、M5 = YをI1でわると、Y = 0・(689 + 623 X + 130 X2 + X3) + 1・(568 + 590 X + 971 X2 + Y) + 441 + 419 X + 38 X2となるので、剰余として 441 + 419 X + 38 X2を得て、ベクトルw(5)1=(441,419,38)を生成する。さらに、DX(Y)DY(F) _ DY(Y)DX(F) = -DX(F)= 1002 + 1002 X6をI1でわると、1002 + 1002 X6 = (865 + 78 X + 910 X2 + 1002 X3) (689 + 623 X + 130 X2 + X3) + 0・(568 + 590 X + 971 X2 + Y) +327 + 655 X + 1004 X2となるので、剰余として 327 + 655 X + 1004 X2 を得て、ベクトルw(5)2=(327,655,1004)を生成する。w(5)1とw(5)2を連結して、ベクトルv5=(441,419,38, 327,655,1004)を生成する。
【０１４１】
次に、M6 = X4をI1でわると、X4 = (879 + X)(689 + 623 X + 130 X2 + X3) + 0・(568 + 590 X + 971 X2 + Y) + 778 + 590 X + 133 X2となるので、剰余として 778 + 590 X + 133 X2を得て、ベクトルw(6)1=(778,590,133)を生成する。さらに、DX(X4)DY(F) _ DY(X4)DX(F) = 8 X3 YをI1でわると、8 X3 Y = (200 + 840 X + 8 Y) (689 + 623 X + 130 X2 + X3) + (542 + 61 X + 978 X2)(568 + 590 X + 971 X2 + Y) + 322 + 653 X + 781 X2となるので、剰余として 322 + 653 X + 781 X2を得て、ベクトルw(6)2=(322, 653,781)を生成する。w(6)1とw(6)2を連結して、ベクトルv6=(778,590,133, 322, 653,781)を生成する。
【０１４２】
次に、M7 = X YをI1でわると、X Y = 38 (689 + 623 X + 130 X2 + X3) + X (568 + 590 X + 971 X2 + Y) + 52 + 983 X + 524 X2となるので、剰余として 52 + 983 X + 524 X2を得て、ベクトルw(7)1=(52,983,524)を生成する。さらに、DX(X Y)DY(F) _ DY(X Y)DX(F) = 1002 X + 1002 X7 + 2 Y2をI1でわると、1002 X + 1002 X7 + 2 Y2 = (24 + 726 X + 78 X2 + 910 X3 + 1002 X4) (689 + 623 X + 130 X2 + X3) +(882 + 838 X + 76 X2 + 2 Y) (568 + 590 X + 971 X2 + Y) + 105 + 954 X + 813 X2となるので、剰余として 105 + 954 X + 813 X2を得て、ベクトルw(7)2=(105,954,813)を生成する。w(7)1とw(7)2を連結して、ベクトルv7=(52,983,524, 105,954,813)を生成する。
【０１４３】
次に、M8 = X5をI1でわると、X5 = (133 + 879 X + X2)(689 + 623 X + 130 X2 + X3) + 0・(568 + 590 X + 971 X2 + Y) + 182 + 657 X + 453 X2となるので、剰余として 182 + 657 X + 453 X2を得て、ベクトルw(8)1=(182,657,453)を生成する。さらに、DX(X5)DY(F) _ DY(X5)DX(F) = 10 X4 YをI1でわると、10 X4 Y = (912 + 90 X + 718 Y + 10 X Y)(689 + 623 X + 130 X2 + X3) + (717 + 855 X + 321 X2)(568 + 590 X + 971 X2 + Y) +619 + 878 X + 281 X2となるので、剰余として 619 + 878 X + 281 X2を得て、ベクトルw(8)2=(619,878,281)を生成する。w(8)1とw(8)2を連結して、ベクトルv8=(182,657,453, 619,878,281)を生成する。
【０１４４】
次に、M9 = X2 YをI1でわると、X2 Y = (524 + 38 X)(689 + 623 X + 130 X2 + X3) + X2 (568 + 590 X + 971 X2 + Y) + 186 + 516 X + 466 X2となるので、剰余として 186 + 516 X + 466 X2を得て、ベクトルw(9)1=(186,516,466)を生成する。さらに、DX(X2 Y)DY(F) _ DY(X2 Y)DX(F) = 1002 X2 + 1002 X8 + 4 X Y2をI1でわると、1002 X2 + 1002 X8 + 4 X Y2 = (892 + 941 X + 865 X2 + 78 X3 + 910 X4 + 1002 X5 + 152 Y) (689 + 623 X + 130 X2 + X3) +(208 + 905 X + 78 X2 + 4 X Y) (568 + 590 X + 971 X2 + Y) + 811 + 600 X + 123 X2となるので、剰余として 811 + 600 X + 123 X2を得て、ベクトルw(9)2=(811,600,123)を生成する。w(9)1とw(9)2を連結して、ベクトルv9=(186,516,466, 811,600,123)を生成する。
【０１４５】
次に、M10 = X6をI1でわると、X6 = (453 + 133 X + 879 X2 + X3)(689 + 623 X + 130 X2 + X3) + 0・(568 + 590 X + 971 X2 + Y) + 673 + 483 X + 289 X2となるので、剰余として 673 + 483 X + 289 X2を得て、ベクトルw(10)1=(673,483,289)を生成する。さらに、DX(X6)DY(F) _ DY(X6)DX(F) = 12 X5 YをI1でわると、12 X5 Y = (985 + 732 X + 587 Y + 458 X Y + 12 X2 Y) (689 + 623 X + 130 X2 + X3) +(166 + 821 X + 391 X2)(568 + 590 X + 971 X2 + Y) + 950 + 741 X + 201 X2となるので、剰余として 950 + 741 X + 201 X2を得て、ベクトルw(10)2=(950,741,201)を生成する。w(10)1とw(10)2を連結して、ベクトルv10=(673,483,289, 950,741,201)を生成する。以上で、イデアル合成部11の単項式ベクトル生成部22における処理を終了する。
【０１４６】
次に、イデアル合成部11は、基底構成部23において、単項式ベクトル生成部22で生成した、10個の6次元ベクトルv1,v2,v3,v4,v5,v6,v7,v8,v9,v10を線形関係導出部24に入力し、出力として複数の10次元ベクトルm1,m2,...を得る。線形関係導出部24は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術であるので、以下、線形関係導出部24の動作はその概略のみ示す。線形関係導出部24は、まず、入力された10個の6次元ベクトルv1,v2,v3,v4,v5,v6,v7,v8,v9,v10を順に並べて10x6行列
【数２０】
0004304937.tif 000021
を構成する。
【０１４７】
次に、線形関係導出装置24は、行列MCに10次元の単位行列を連結し、
【数２１】
0004304937.tif 000022
を得る。
次に、線形関係導出部24は、i行目の定数倍をi+1行目から10行目に加える事で(i=1,2,...,6)、行列M'Cを三角化し以下の行列mを得る。
【０１４８】
【数２２】
0004304937.tif 000023
よく知られているように行列mの7から10行目の第7成分以降よりなるベクトルは、入力された10個の6次元ベクトルv1,v2,v3,v4,v5,v6,v7,v8,v9,v10の全ての1次独立な線形従属関係 ・i10 mji vi = 0 (j=1,2,...,)を表すベクトル{(m1,1,m1,2,...,m1,n),(m2,1,m2,2,...,m2,n),...}である。線形関係導出部24は、行列mの7行目の第7成分以降よりなるベクトルm1=(699, 601, 688, 281, 217, 287, 1, 0, 0, 0)、行列mの8行目の第7成分以降よりなるベクトルm2=(193, 959, 364, 180, 550, 43, 0, 1, 0, 0)、行列mの9行目の第7成分以降よりなるベクトルm3=(780, 667, 96, 50, 897, 327, 0, 0, 1, 0)および行列mの10行目の第7成分以降よりなるベクトルm4=(761, 727, 417, 523, 278, 912, 0, 0, 0, 1)を出力する。イデアル合成部11の基底構成部23における処理の説明に戻る。
【０１４９】
次に、イデアル合成部11は、図11のグレブナ基底構成用テーブルを参照し前記値d3＝6を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0であるベクトルが前記複数のベクトルm1=(699, 601, 688, 281, 217, 287, 1, 0, 0, 0)、
m2=(193, 959, 364, 180, 550, 43, 0, 1, 0, 0)、
m3=(780, 667, 96, 50, 897, 327, 0, 0, 1, 0)および
m4=(761, 727, 417, 523, 278, 912, 0, 0, 0, 1)
中に存在しないレコードを検索する。第１レコードの位数フィールドの値は6であり、第1レコードの成分番号リスト7,8,9,10に対応する成分がすべて0であるベクトルはm1,m2,m3,m4には存在していないので、検索結果として第1レコードが得られる。
【０１５０】
さらに第1レコードの第一ベクトル型の値は(*,*,*,*,*,*,1,0,0,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm1=(699, 601, 688, 281, 217, 287, 1, 0, 0, 0)と合致するので、ベクトルm1を、代数曲線パラメータファイルAの単項式順序1, X, X2, X3, Y, X4, XY, X5, X2 Y,X6の各単項式の係数の列とみなし、多項式f1=699 + 601 X + 688 X2 + 281 X3 + 217 Y + 287 X4 + XYを生成する。
【０１５１】
同様にして、第1レコードの第二ベクトル型の値は(*,*,*,*,*,*,0,1,0,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm2=(193, 959, 364, 180, 550, 43, 0, 1, 0, 0)と合致するので、ベクトルm2を、代数曲線パラメータファイルAの単項式順序1, X, X2, X3, Y, X4, XY, X5, X2 Y,X6の各単項式の係数の列とみなし、多項式f2=193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5を生成する。第1レコードの第三ベクトル型の値はnullなので、無視される。最後に、イデアル合成部11は、多項式の集合J={f1,f2}={699 + 601 X + 688 X2 + 281 X3 + 217 Y + 287 X4 + XY, 193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5}を構成し、出力する。以上で、イデアル合成部11の動作は終了する。
【０１５２】
次に、第一のイデアル縮約部12が、図3に示す機能ブロックの処理の流れにしたがって、図8の代数曲線パラメータファイルAおよびイデアル合成部11が出力したグレブナ基底
J={699 + 601 X + 688 X2 + 281 X3 + 217 Y + 287 X4 + X  Y,  193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5}
を入力として以下のように動作する。
【０１５３】
まず、イデアル縮約部12は、図3のイデアル型分類部31において、図9のイデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルJの型と一致するレコードを検索し第1レコードを得て、第1レコードのイデアル型番号フィールドの値N＝61および縮約位数フィールドの値d=3を取得する。次に、イデアル縮約部12は、前記d=3が0でないことを確認し、多項式ベクトル生成部32において、図10の単項式リストテーブルを参照し前記d=3を位数フィールドの値に持つレコードを検索し第4レコードを得て、第4レコードの単項式リストフィールドに記述されている単項式のリスト1, X, X2, X3, Y, X4, XYを取得する。
【０１５４】
さらに、イデアル縮約部12は、
Jの第1要素f=699 + 601 X + 688 X2 + 281 X3 + 217 Y + 287 X4 + XY、
第2要素g=193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5を取得し(Jには第3要素はないので第3番目の多項式hは用いない)、代数曲線パラメータファイルAの係数リスト0,7,0,0,0,0,0,0,0,0,0,1,1を、代数曲線パラメータファイルAの単項式順序1, X, X2, X3, Y, X4, XY, X5, X2 Y, X6, X3 Y, X7, Y2の各単項式の係数の列とみなして、定義多項式F=Y2+X7+7Xを生成する。
【０１５５】
次に、イデアル縮約部12は、前記単項式のリスト1, X, X2, X3, Y, X4, XY中のそれぞれのMi(1<=i<=7)に対して、Miと多項式gの積Mi gの、多項式fおよびFによる剰余式riを計算し、その係数を、代数曲線パラメータファイルAの単項式順序1, X, X2, X3, Y, X4, XY, X5, X2 Y, X6, X3 Y, X7の順にならべて、ベクトルviを生成する。すなわち、まず、第一番目の単項式M1=1に対して、1・g = 193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5をf=699 + 601 X + 688 X2 + 281 X3 + 217 Y + 287 X4 + XYおよびF= Y2+X7+7Xで割ると、g = 0・f + 0・F + 193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5となるので、剰余193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5を得て、ベクトルv1=(193, 959, 364, 180, 550, 43, 0, 1, 0, 0, 0, 0)を生成する。
【０１５６】
次に、第二番目の単項式M2=Xに対して、X g = X (193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5)をf=699 + 601 X + 688 X2 + 281 X3 + 217 Y + 287 X4 + XYおよびF= Y2+X7+7Xで割ると、X g = 550 f + 0・F + 988 + 595 X + 934 X2 + 191 X3 + 743 X4 + 43 X5 + X6 + 721 Yとなるので、剰余988 + 595 X + 934 X2 + 191 X3 + 743 X4 + 43 X5 + X6 + 721 Yを得て、ベクトルv2=(988, 595, 934, 191, 721, 743, 0, 43, 0, 1, 0, 0)を生成する。
【０１５７】
次に、第三番目の単項式M3=X2に対して、X2 g = X2 (193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5)をf=699 + 601 X + 688 X2 + 281 X3 + 217 Y + 287 X4 + XYおよびF= Y2+X7+7Xで割ると、X2 g = (721 + 550 X) f + 0・F + 521 + 528 X + 975 X2 + 133 X3 + 109 X4 + 743 X5 + 43 X6 + X7 + 947 Yとなるので、剰余521 + 528 X + 975 X2 + 133 X3 + 109 X4 + 743 X5 + 43 X6 + X7 + 947 Yを得て、ベクトルv3=(521, 528, 975, 133, 947, 109, 0, 743, 0, 43, 0, 1)を生成する。
【０１５８】
次に、第四番目の単項式M4=X3に対して、X3 g = X3 (193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5)をf=699 + 601 X + 688 X2 + 281 X3 + 217 Y + 287 X4 + XYおよびF= Y2+X7+7Xで割ると、X3 g = (200 + 969 X + 101 X2 + 287 X3 + 1008 Y) f +(217 + X) F + 451 + 78 X + 481 X2 + 791 X3 + 389 X4 + 924 X5 + 527 X6 + 195 X7 + 686 Yとなるので、剰余451 + 78 X + 481 X2 + 791 X3 + 389 X4 + 924 X5 + 527 X6 + 195 X7 + 686 Yを得て、ベクトルv4=(451, 78, 481, 791, 686, 389, 0, 924, 0, 527, 0, 195)を生成する。
【０１５９】
次に、第五番目の単項式M5=Yに対して、Y g = Y (193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5)をf=699 + 601 X + 688 X2 + 281 X3 + 217 Y + 287 X4 + XYおよびF= Y2+X7+7Xで割ると、Y g = (884 + 712 X + 316 X2 + 195 X3 + X4 + 287 Y) f +(829 + 722 X) F +601 + 459 X + 217 X2 + 14 X3 + 965 X4 + 924 X5 + 130 X6 + 438 X7 + 253 Yとなるので、剰余601 + 459 X + 217 X2 + 14 X3 + 965 X4 + 924 X5 + 130 X6 + 438 X7 + 253 Yを得て、ベクトルv5=(601, 459, 217, 14, 253, 965, 0, 924, 0, 130, 0, 438)を生成する。
【０１６０】
次に、第六番目の単項式M6=X4に対して、X4 g = X4 (193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5)をf=699 + 601 X + 688 X2 + 281 X3 + 217 Y + 287 X4 + XYおよびF= Y2+X7+7Xで割ると、X4 g = (317 + 128 X + 188 X2 + 571 X3 + 287 X4 + 814 Y + 1008 X Y) f +( 946 + 412 X + X2) F +397 + 954 X + 514 X2 + 891 X3 + 255 X4 + 901 X5 + 173 X6 + 906 X7 + 922 Yとなるので、剰余397 + 954 X + 514 X2 + 891 X3 + 255 X4 + 901 X5 + 173 X6 + 906 X7 + 922 Yを得て、ベクトルv6=(397, 954, 514, 891, 922, 255, 0, 901, 0, 173, 0, 906)を生成する。
【０１６１】
最後に、第七番目の単項式M7=X Yに対して、X Y g = X Y (193 + 959 X + 364 X2 + 180 X3 + 550 Y + 43 X4 + X5)をf=699 + 601 X + 688 X2 + 281 X3 + 217 Y + 287 X4 + XYおよびF= Y2+X7+7Xで割ると、X Y g = (992 + 536 X + 805 X2 + 906 X3 + 195 X4 + X5 + 571 Y + 287 X Y) f +( 200 + 258 X + 722 X2) F +784 + 420 X + 871 X2 + 113 X3 + 933 X4 + 749 X5 + 153 X6 + 112 X7 + 88 Yとなるので、剰余784 + 420 X + 871 X2 + 113 X3 + 933 X4 + 749 X5 + 153 X6 + 112 X7 + 88 Yを得て、ベクトルv7=(784, 420, 871, 113, 88, 933, 0, 749, 0, 153, 0, 112)を生成する。以上で、第二のイデアル縮約部12の多項式ベクトル生成部32における処理を終了する。
次に、第二のイデアル縮約部12は、基底構成部33において、多項式ベクトル生成部32で生成した、7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7を線形関係導出部34に入力し、出力として複数の7次元ベクトルm1,m2,...を得る。
【０１６２】
線形関係導出部34は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術に属するので、以下、線形関係導出部34の動作はその概略のみ示す。線形関係導出部34は、まず、入力された7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7を順に並べて7x12行列
【数２３】
0004304937.tif 000024
を構成する。
【０１６３】
次に、線形関係導出部34は行列MRに7次元の単位行列を連結し、
【数２４】
0004304937.tif 000025
を構成する。
【０１６４】
次に、線形関係装置装置34は、i行目の定数倍をi+1行目から7行目に加えることで(i=1,2,3)行列M'Rを三角化し以下の行列mを得る。
【数２５】
0004304937.tif 000026
よく知られているように行列mの4から7行目の第13成分以降よりなるベクトルは、入力された7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7の全ての1次独立な線形従属関係Σi=17 mji vi = 0 (j=1,2,...,)を表すベクトル{(m1,1,m1,2,...,m1,7),(m2,1,m2,2,...,m2,7),...}である。線形関係導出部34は、行列mの4行目の第13成分以降よりなるベクトルm1=(804, 795, 814, 1, 0, 0, 0)、行列mの5行目の第13成分以降よりなるベクトルm2=(522, 542, 571, 0, 1, 0, 0)、行列mの6行目の第13成分以降よりなるベクトルm3=(385, 443, 103, 0, 0, 1, 0)および行列mの7行目の第13成分以降よりなるベクトルm4= (12, 627, 897, 0, 0, 0, 1)を出力する。
【０１６５】
第一のイデアル縮約部12の基底構成部33における処理の説明に戻る。次に、この第二のイデアル縮約部12は、図11のグレブナ基底構成用テーブルを参照し前記値d＝3を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0であるベクトルが前記複数のベクトルm1=(804, 795, 814, 1, 0, 0, 0),
m2=(522, 542, 571, 0, 1, 0, 0)、
m3=(385, 443, 103, 0, 0, 1, 0)および
m4= (12, 627, 897, 0, 0, 0, 1)
中に存在しないレコードを検索する。第11レコードの位数フィールドの値は3であり、第11レコードの成分番号リスト4,5,6,7に対応する成分がすべて0であるベクトルはm1,m2,m3,m4には存在していないので、検索結果として第11レコードが得られる。
【０１６６】
さらに第11レコードの第一ベクトル型の値は(*,*,*,1,0,0,0) であり(記号*はすべての数を表すと解釈する)、これはベクトルm1=(804, 795, 814, 1, 0, 0, 0)と合致するので、ベクトルm1を、代数曲線パラメータファイルAの単項式順序1, X, X2, X3, Y, X4, XYの各単項式の係数の列とみなし、多項式f1=804 + 795 X + 814 X2 + X3を生成する。
【０１６７】
同様にして、第11レコードの第二ベクトル型の値は(*,*,*,0,1,0,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm2=(522, 542, 571, 0, 1, 0, 0)と合致するので、ベクトルm2を、代数曲線パラメータファイルAの単項式順序1, X, X2, X3, Y, X4, XYの各単項式の係数の列とみなし、多項式f2=522 + 542 X + 571 X2 + Yを生成する。第11レコードの第三ベクトル型の値はnullなので、無視される。最後に、イデアル縮約装置12は、多項式の集合J*={f1,f2}={804 + 795 X + 814 X2 + X3, 522 + 542 X + 571 X2 + Y}を構成し、出力する。以上で、第一のイデアル縮約部12の動作は終了する。
【０１６８】
次に、第二のイデアル縮約部13が、図3に示す機能ブロックの処理の流れにしたがって、図8の代数曲線パラメータファイルAおよび第一のイデアル縮約部12が出力したグレブナ基底J*={f1,f2}={804 + 795 X + 814 X2 + X3, 522 + 542 X + 571 X2 + Y}を入力として以下のように動作する。まず、イデアル縮約部13は、図3のイデアル型分類部31において、図9のイデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルJ*の型と一致するレコードを検索し第11レコードを得て、第11レコードのイデアル型番号フィールドの値N＝31および縮約位数フィールドの値d=3を取得する。
【０１６９】
次に、イデアル縮約部13は、前記d=3が0でないことを確認し、多項式ベクトル生成部32において、図10の単項式リストテーブルを参照し前記d=3を位数フィールドの値に持つレコードを検索し第4レコードを得て、第4レコードの単項式リストフィールドに記述されている単項式のリスト1, X, X2, X3, Y, X4, XYを取得する。さらに、イデアル縮約部13は、J*の第1要素f=804 + 795 X + 814 X2 + X3、第2要素g=522 + 542 X + 571 X2 + Yを取得し(J*には第3要素はないので第3番目の多項式hは用いない)、代数曲線パラメータファイルAの係数リスト0,7,0,0,0,0,0,0,0,0,0,1,1を、代数曲線パラメータファイルAの単項式順序1, X, X2, X3, Y, X4, XY, X5, X2 Y, X6, X3 Y, X7, Y2の各単項式の係数の列とみなして、定義多項式F=Y2+X7+7Xを生成する。
【０１７０】
次に、イデアル縮約部13は、前記単項式のリスト1, X, X2, X3, Y, X4, XY中のそれぞれのMi(1<=i<=7)に対して、Miと多項式gの積Mi gの、多項式fおよびFによる剰余式riを計算し、その係数を、代数曲線パラメータファイルAの単項式順序1, X, X2, X3, Y, X4, XY, X5, X2 Y, X6, X3 Y, X7の順にならべて、ベクトルviを生成する。すなわち、まず、第一番目の単項式M1=1に対して、1・g = 522 + 542 X + 571 X2 + Yをf=804 + 795 X + 814 X2 + X3およびF= Y2+X7+7Xで割ると、g = 0・f + 0・F + 522 + 542 X + 571 X2 + Yとなるので、剰余522 + 542 X + 571 X2 + Yを得て、ベクトルv1=(522, 542, 571, 0, 1, 0, 0, 0, 0)を生成する。
【０１７１】
次に、第二番目の単項式M2=Xに対して、X g = X (522 + 542 X + 571 X2 + Y)をf=804 + 795 X + 814 X2 + X3およびF= Y2+X7+7Xで割ると、X g = 571 f + 0・F + 11 + 627 X + 897 X2 + X Yとなるので、剰余11 + 627 X + 897 X2 + X Yを得て、ベクトルv2=(11, 627, 897, 0, 0, 0, 1, 0, 0)を生成する。
【０１７２】
次に、第三番目の単項式M3=X2に対して、X2 g = X2 (522 + 542 X + 571 X2 + Y)をf=804 + 795 X + 814 X2 + X3およびF= Y2+X7+7Xで割ると、X2 g = (897 + 571 X) f + 0・F + 247 + 259 X + 985 X2 + X2 Yとなるので、剰余247 + 259 X + 985 X2 + X2 Yを得て、ベクトルv3=(247, 259, 985, 0, 0, 0, 0, 0, 1)を生成する。
【０１７３】
次に、第四番目の単項式M4=X3に対して、X3 g = X3 (522 + 542 X + 571 X2 + Y)をf=804 + 795 X + 814 X2 + X3およびF= Y2+X7+7Xで割ると、X3 g = (985 + 897 X + 571 X2 + Y) f + 0・F + 125 + 156 X + 624 X2 + 205 Y + 214 X Y + 195 X2 Yとなるので、剰余125 + 156 X + 624 X2 + 205 Y + 214 X Y + 195 X2 Yを得て、ベクトルv4=(125, 156, 624, 0, 205, 0, 214, 0, 195)を生成する。
【０１７４】
次に、第五番目の単項式M5=Yに対して、Y g = Y (522 + 542 X + 571 X2 + Y)をf=804 + 795 X + 814 X2 + X3およびF= Y2+X7+7Xで割ると、Y g = (486 + 348 X + 103 X2 + 814 X3 + 1008 X4) f + 1・F + 748 + 780 X + 665 X2 + 522 Y + 542 X Y + 571 X2 Yとなるので、剰余748 + 780 X + 665 X2 + 522 Y + 542 X Y + 571 X2 Yを得て、ベクトルv5=(748, 780, 665, 0, 522, 0, 542, 0, 571)を生成する。
【０１７５】
次に、第六番目の単項式M6=X4に対して、X4 g = X4 (522 + 542 X + 571 X2 + Y)をf=804 + 795 X + 814 X2 + X3およびF= Y2+X7+7Xで割ると、X4 g = (624 + 985 X + 897 X2 + 571 X3 + 195 Y + X Y) f + 0・F + 786 + 473 X + 756 X2 + 624 Y + 566 X Y + 906 X2 Yとなるので、剰余786 + 473 X + 756 X2 + 624 Y + 566 X Y + 906 X2 Yを得て、ベクトルv6=(786, 473, 756, 0, 624, 0, 566, 0, 906)を生成する。
【０１７６】
最後に、第七番目の単項式M7=X Yに対して、X Y g = X Y (522 + 542 X + 571 X2 + Y)をf=804 + 795 X + 814 X2 + X3およびF= Y2+X7+7Xで割ると、X Y g = (665 + 486 X + 348 X2 + 103 X3 + 814 X4 + 1008 X5 + 571 Y) f + X F + 110 + 789 X + 294 X2 + 11 Y + 627 X Y + 897 X2 Yとなるので、剰余110 + 789 X + 294 X2 + 11 Y + 627 X Y + 897 X2 Yを得て、ベクトルv7=(110, 789, 294, 0, 11, 0, 627, 0, 897)を生成する。以上で、第二のイデアル縮約部13の多項式ベクトル生成部32における処理を終了する。
【０１７７】
次に、このイデアル縮約装置13は、基底構成部33において、多項式ベクトル生成部32で生成した、7個の9次元ベクトルv1,v2,v3,v4,v5,v6,v7を線形関係導出部34に入力し、出力として複数の7次元ベクトルm1,m2,...を得る。線形関係導出部34は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術に属するので、以下、線形関係導出部34の動作はその概略のみ示す。
【０１７８】
線形関係導出部34は、まず、入力された7個の9次元ベクトルv1,v2,v3,v4,v5,v6,v7を順に並べて7x9行列
【数２６】
0004304937.tif 000027
を構成する。
【０１７９】
次に、線形関係導出部34は、行列MRに7次元の単位行列を連結し、
【数２７】
0004304937.tif 000028
を構成する。
【０１８０】
次に、線形関係導出部34は、i行目の定数倍をi+1行目から7行目に加えることで(i=1,2,3)、行列M'Rを三角化し以下の行列mを得る。
【数２８】
0004304937.tif 000029
【０１８１】
よく知られているように行列mの4から7行目の第10成分以降よりなるベクトルは、入力された7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7の全ての1次独立な線形従属関係Σi7 mji vi = 0 (j=1,2,...,)を表すベクトル{(m1,1,m1,2,...,m1,n),(m2,1,m2,2,...,m2,n),...}である。線形関係導出部34は、行列mの4行目の第10成分以降よりなるベクトルm1=(804, 795, 814, 1, 0, 0, 0)、行列mの5行目の第10成分以降よりなるベクトルm2=(487, 467, 438, 0, 1, 0, 0)、行列mの6行目の第10成分以降よりなるベクトルm3=(385, 443, 103, 0, 0, 1, 0)および行列mの7行目の第10成分以降よりなるベクトルm4=(998, 382, 112, 0, 0, 0, 1)を出力する。
【０１８２】
第二のイデアル縮約部13の基底構成部33における処理の説明に戻る。次に、このイデアル縮約部13は、図11のグレブナ基底構成用テーブルを参照し前記値d＝3を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0であるベクトルが前記複数のベクトルm1=(804, 795, 814, 1, 0, 0, 0),m2=(487, 467, 438, 0, 1, 0, 0)、m3=(385, 443, 103, 0, 0, 1, 0)およびm4=(998, 382, 112, 0, 0, 0, 1)中に存在しないレコードを検索する。第11レコードの位数フィールドの値は3であり、第11レコードの成分番号リスト4,5,6,7がすべて0であるベクトルはm1,m2,m3,m4には存在していないので、検索結果として第11レコードが得られる。
【０１８３】
さらに第11レコードの第一ベクトル型の値は(*,*,*,1,0,0,0) であり(記号*はすべての数を表すと解釈する)、これはベクトルm1=(804, 795, 814, 1, 0, 0, 0)と合致するので、ベクトルm1を、代数曲線パラメータファイルAの単項式順序1, X, X2, X3, Y, X4, XYの各単項式の係数の列とみなし、多項式f1=804 + 795 X + 814 X2 + X3を生成する。
【０１８４】
同様にして、第11レコードの第二ベクトル型の値は(*,*,*,0,1,0,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm2=(487, 467, 438, 0, 1, 0, 0)と合致するので、ベクトルm2を、代数曲線パラメータファイルAの単項式順序1, X, X2, X3, Y, X4, XYの各単項式の係数の列とみなし、多項式f2=487 + 467 X + 438 X2 + Yを生成する。第11レコードの第三ベクトル型の値はnullなので、無視される。
【０１８５】
最後に、イデアル縮約部13は、多項式の集合J**={f1,f2}={804 + 795 X + 814 X2 + X3, 487 + 467 X + 438 X2 + Y}を構成し、出力する。以上で、第二のイデアル縮約部13の動作は終了する。最後に、図1のヤコビ群加算装置において、イデアル縮約部13の出力したグレブナ基底J**= {804 + 795 X + 814 X2 + X3, 487 + 467 X + 438 X2 + Y}が出力装置より出力される。
次に、C25曲線を用いた場合の実施例を示す。本実施例では、代数曲線パラメータファイルとして図12の代数曲線パラメータファイルを、イデアル型テーブルとして図13のイデアル型テーブルを、単項式リストテーブルとして図14の単項式リストテーブルを、グレブナ基底構成用テーブルとして図15のグレブナ基底構成用テーブルを用いる。
【０１８６】
図1のヤコビ群要素加算装置において、図12の代数曲線パラメータファイルAおよび代数曲線パラメータファイルA で指定されたC25曲線のヤコビ群の要素を表す、代数曲線パラメータファイルAで指定された代数曲線の座標環のイデアルのグレブナ基底
I1 = {729 + 88 X + X2, 475 + 124 X + Y}
および
I2 = {180 + 422 X + X2, 989 + 423 X + Y}
が入力されたとする。
【０１８７】
まず、イデアル合成部11が、図2に示す機能ブロックの処理の流れにしたがって、図12の代数曲線パラメータファイルA、上記グレブナ基底I1およびI2を入力として以下のように動作する。イデアル合成部11は、まず、図2のイデアル型分類部21において、図13のイデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルI1の型と一致するレコードを検索し第6レコードを得て、第6レコードのイデアル型番号フィールドの値N1＝21および位数フィールドの値d1=2を取得する。同様に、イデアル型が入力イデアルI2の型と一致するレコードを検索し第6レコードを得て、第6レコードのイデアル型番号フィールドの値N2＝21および位数フィールドの値d2=2を取得する。
【０１８８】
次に、イデアル合成部11は、単項式ベクトル生成部22において、前記位数フィールドの値d1=2およびd2=2の和d3=d1+d2=4を計算し、図14の単項式リストテーブルを参照し前記d3=4を位数フィールドの値に持つレコードを検索し第1レコードを得て、第1レコードの単項式リストフィールドに記述されている単項式のリスト1, X, X2, Y, X3, XY, X4を取得する。I1とI2は異なるので、前記単項式のリスト1, X, X2, Y, X3, XY, X4中のそれぞれのMi(1<=i<=7)に対して、MiをI1で割った剰余を計算し、多項式a(i)1 + a(i)2 Xを得て、その係数を、代数曲線パラメータファイルAの単項式順序1, X, ・・・の順にならべて、ベクトルw(i)1=(a(i)1,a(i)2)を生成する。
【０１８９】
さらに、MiをI2で割った剰余を計算し、多項式b(i)1 + b(i)2 Xを得て、その係数を、代数曲線パラメータファイルAの単項式順序1, X,・・・の順にならべて、ベクトルw(i)2=(b(i)1,b(i)2)を生成し、上記2つのベクトルw(i)1とw(i)2を連結してベクトルvi=(a(i)1,a(i)2,b(i)1,b(i)2)を生成する。すなわち、M1 = 1 をI1でわると、1 = 0・(729 + 88 X + X2) + 0・(475 + 124 X + Y) + 1となるので、剰余として 1 を得て、ベクトルw(1)1=(1,0)を生成する。さらに、M1 = 1 をI2でわると、1 = 0・(180 + 422 X + X2) + 0・(989 + 423 X + Y) + 1となるので、剰余として 1 を得て、ベクトルw(1)2=(1,0)を生成する。w(1)1とw(1)2を連結して、ベクトルv1=(1,0,1,0)を生成する。
【０１９０】
次に、M2 = X をI1でわると、X = 0・(729 + 88 X + X2) + 0・(475 + 124 X + Y) + Xとなるので、剰余として X を得て、ベクトルw(2)1=(0,1)を生成する。さらに、M2 = X をI2でわると、X = 0・(180 + 422 X + X2) + 0・(989 + 423 X + Y) + Xとなるので、剰余として X を得て、ベクトルw(2)2=(0,1)を生成する。w(2)1とw(2)2を連結して、ベクトルv2=(0,1,0,1)を生成する。
【０１９１】
次に、M3 = X2 をI1でわると、X2 = 1・(729 + 88 X + X2) + 0・(475 + 124 X + Y) + 280 + 921 Xとなるので、剰余として 280 + 921 X を得て、ベクトルw(3)1=(280,921)を生成する。さらに、M3 = X2 をI2でわると、X2 = 1・(180 + 422 X + X2) + 0・(989 + 423 X + Y) + 829 + 587 Xとなるので、剰余として 829 + 587 X を得て、ベクトルw(3)2=(829,587)を生成する。w(3)1とw(3)2を連結して、ベクトルv3=(280,921, 829,587)を生成する。
【０１９２】
次に、M4 = Y をI1でわると、Y = 0・(729 + 88 X + X2) + 1・(475 + 124 X + Y) + 534 + 885 Xとなるので、剰余として 534 + 885 X を得て、ベクトルw(4)1=(534,885)を生成する。さらに、M4 = Y をI2でわると、Y = 0・(180 + 422 X + X2) + 1・(989 + 423 X + Y) + 20 + 586 Xとなるので、剰余として 20 + 586 X を得て、ベクトルw(4)2=(20, 586)を生成する。w(4)1とw(4)2を連結して、ベクトルv4=(534,885, 20, 586)を生成する。
【０１９３】
次に、M5 = X3 をI1でわると、X3 = (921 + X)(729 + 88 X + X2) + 0・(475 + 124 X + Y) + 585 + 961 Xとなるので、剰余として 585 + 961 X を得て、ベクトルw(5)1=(585, 961)を生成する。
【０１９４】
さらに、M5 = X3 をI2でわると、X3 = (587 + X)(180 + 422 X + X2) + 0・(989 + 423 X + Y) + 285 + 320 Xとなるので、剰余として 285 + 320 X を得て、ベクトルw(5)2=(285, 320)を生成する。w(5)1とw(5)2を連結して、ベクトルv5=(585, 961, 285, 320)を生成する。次に、M6 = XY をI1でわると、XY = 885 (729 + 88 X + X2) + X (475 + 124 X + Y) + 595 + 347 Xとなるので、剰余として 595 + 347 X を得て、ベクトルw(6)1=(595, 347)を生成する。
【０１９５】
さらに、M6 = XY をI2でわると、XY = 586 (180 + 422 X + X2) + X (989 + 423 X + Y) + 465 + 942 Xとなるので、剰余として 465 + 942 X を得て、ベクトルw(6)2=(465, 942)を生成する。w(6)1とw(6)2を連結して、ベクトルv6=(595, 347, 465, 942)を生成する。
【０１９６】
最後に、M7 = X4 をI1でわると、X4 = (961 + 921 X + X2) (729 + 88 X + X2) + 0・(475 + 124 X + Y) + 686 + 773 Xとなるので、剰余として 686 + 773 Xを得て、ベクトルw(7)1=(686, 773)を生成する。さらに、M7 = X4 をI2でわると、X4 = (320 + 587 X + X2 ) (180 + 422 X + X2) + 0・(989 + 423 X + Y) + 922 + 451 Xとなるので、剰余として 922 + 451 Xを得て、ベクトルw(7)2=(922, 451)を生成する。w(7)1とw(7)2を連結して、ベクトルv7=(686, 773, 922, 451)を生成する。以上で、イデアル合成装置11の、単項式ベクトル生成部22における処理を終了する。
【０１９７】
次に、イデアル合成部11は、基底構成部23において、単項式ベクトル生成部22で生成した、7個の4次元ベクトルv1,v2,v3,v4,v5,v6,v7を線形関係導出装置24に入力し、出力として複数の7次元ベクトルm1,m2,...を得る。線形関係導出部24は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術であるので、以下、線形関係導出部24の動作はその概略のみ示す。線形関係導出部24は、まず、入力された7個の4次元ベクトルv1,v2,v3,v4,v5,v6,v7を順に並べて7x4行列
【数２９】
0004304937.tif 000030
を構成する。
【０１９８】
次に、線形関係導出部24は、行列MCに7次元の単位行列を連結し、
【数３０】
0004304937.tif 000031
を得る。
【０１９９】
次に、線形関係導出部24は、i行目の定数倍をi+1行目から7行目に加えることで(i=1,2,...,4)、行列M'Cを三角化し、以下の行列mを得る。
【数３１】
0004304937.tif 000032
【０２００】
よく知られているように行列mの5から7行目の第5成分以降よりなるベクトルは、入力された7個の4次元ベクトルv1,v2,v3,v4,v5,v6,v7の全ての1次独立な線形従属関係Σi=17 mji vi = 0 (j=1,2,...,)を表すベクトル{(m1,1,m1,2,...,m1,7),(m2,1,m2,2,...,m2,7),...}である。
【０２０１】
線形関係導出部24は、行列mの5行目の第5成分以降よりなるベクトルm1=(444, 709, 900, 42, 1, 0, 0)、行列mの6行目の第5成分以降よりなるベクトルm2=(969, 716, 940, 619, 0, 1, 0)および行列mの7行目の第5成分以降よりなるベクトルm3=(635, 230, 807, 778, 0, 0, 1)を出力する。
【０２０２】
イデアル合成部11の基底構成部23における処理の説明に戻る。次に、イデアル合成部11は、図15のグレブナ基底構成用テーブルを参照し前記値d3＝4を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0であるベクトルが前記複数のベクトルm1=(444, 709, 900, 42, 1, 0, 0)、m2=(969, 716, 940, 619, 0, 1, 0)およびm3=(635, 230, 807, 778, 0, 0, 1)中に存在しないレコードを検索する。第１レコードの位数フィールドの値は4であり、第1レコードの成分番号リスト5,6,7に対応する成分がすべて0であるベクトルはm1,m2,m3には存在していないので、検索結果として第1レコードが得られる。
【０２０３】
さらに第1レコードの第一ベクトル型の値は(*,*,*,*,1,0,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm1=(444, 709, 900, 42, 1, 0, 0)と合致するので、ベクトルm1を、代数曲線パラメータファイルAの単項式順序1, X, X2, Y, X3, XY, X4の各単項式の係数の列とみなし、多項式f1=444 + 709 X + 900 X2 + 42 Y + X3を生成する。
【０２０４】
同様にして、第1レコードの第二ベクトル型の値は(*,*,*,*,0,1,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm2=(969, 716, 940, 619, 0, 1, 0)と合致するので、ベクトルm2を、代数曲線パラメータファイルAの単項式順序1, X, X2, Y, X3, XY, X4の各単項式の係数の列とみなし、多項式f2=969 + 716 X + 940 X2 + 619 Y + X Yを生成する。第1レコードの第三ベクトル型の値はnullなので、無視される。最後に、イデアル合成部11は、多項式の集合J={f1,f2}={444 + 709 X + 900 X2 + 42 Y + X3, 969 + 716 X + 940 X2 + 619 Y + X Y}を構成し、出力する。以上で、イデアル合成部11の動作は終了する。
【０２０５】
次に、第一のイデアル縮約部12が、図3に示す機能ブロックの処理の流れにしたがって、図12の代数曲線パラメータファイルAおよびイデアル合成部11が出力したグレブナ基底J={444 + 709 X + 900 X2 + 42 Y + X3, 969 + 716 X + 940 X2 + 619 Y + X Y}を入力として以下のように動作する。まず、第一のイデアル縮約部12は、図3のイデアル型分類部31において、図12のイデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルJの型と一致するレコードを検索し第1レコードを得て、第1レコードのイデアル型番号フィールドの値N＝41および縮約位数フィールドの値d=2を取得する。
【０２０６】
次に、イデアル縮約部12は、前記d=2が0でないことを確認し、多項式ベクトル生成部32において、図14の単項式リストテーブルを参照し前記d=2を位数フィールドの値に持つレコードを検索し第3レコードを得て、第3レコードの単項式リストフィールドに記述されている単項式のリスト1, X, X2, Yを取得する。さらに、イデアル縮約部12は、Jの第1要素f=444 + 709 X + 900 X2 + 42 Y + X3、第2要素g=969 + 716 X + 940 X2 + 619 Y + X Yを取得し(Jには第3要素はないので第3番目の多項式hは用いない)、代数曲線パラメータファイルAの係数リスト0,7,0,0,0,0,0,0,1,1を、代数曲線パラメータファイルAの単項式順序1, X, X2, Y, X3, XY, X4, X2 Y, X5, Y2の各単項式の係数の列とみなして、定義多項式F=Y2+X5+7Xを生成する。
【０２０７】
次に、イデアル縮約部12は、前記単項式のリスト1, X, X2, Y中のそれぞれのMi(1<=i<=4)に対して、Miと多項式gの積Mi gの、多項式fおよびFによる剰余式riを計算し、その係数を、代数曲線パラメータファイルAの単項式順序1, X, X2, Y, X3, XY, X4, X2 Yの順にならべて、ベクトルviを生成する。すなわち、まず、第一番目の単項式M1=1に対して、1・g = 969 + 716 X + 940 X2 + 619 Y + X Y をf=444 + 709 X + 900 X2 + 42 Y + X3およびF= Y2+X5+7Xで割ると、g = 0・f + 0・F + 969 + 716 X + 940 X2 + 619 Y + X Yとなるので、剰余969 + 716 X + 940 X2 + 619 Y + X Yを得て、ベクトルv1=(969, 716, 940, 619, 0, 1, 0, 0)を生成する。
【０２０８】
次に、第二番目の単項式M2=Xに対して、X g = X (969 + 716 X + 940 X2 + 619 Y + X Y) をf=444 + 709 X + 900 X2 + 42 Y + X3およびF= Y2+X5+7Xで割ると、X g = 940 f + 0・F + 366 + 449 X + 258 X2 + 880 Y + 619 X Y + X2 Yとなるので、剰余366 + 449 X + 258 X2 + 880 Y + 619 X Y + X2 Yを得て、ベクトルv2=(366, 449, 258, 880, 0, 619, 0, 1)を生成する。
次に、第三番目の単項式M3=X2に対して、X2 g = X2 (969 + 716 X + 940 X2 + 619 Y + X Y) をf=444 + 709 X + 900 X2 + 42 Y + X3およびF= Y2+X5+7Xで割ると、X2 g = (297 + 473 X + 42 X2 + Y) f + 967 F + 311 + 462 X + 199 X2 + 199 Y + 614 X Y + 982 X2 Yとなるので、剰余311 + 462 X + 199 X2 + 199 Y + 614 X Y + 982 X2 Yを得てベクトルv3=(311, 462, 199, 199, 0, 614, 0, 982)を生成する。
【０２０９】
最後に、第四番目の単項式M4=Yに対して、Y g = Y (969 + 716 X + 940 X2 + 619 Y + X Y) をf=444 + 709 X + 900 X2 + 42 Y + X3およびF= Y2+X5+7Xで割ると、Y g = (994 + 625 X + 27 X2 + 1008 X3 + 42 Y) f + (873 + X) F + 606 + 463 X + 322 X2 + 104 Y + 183 X Y + 348 X2 Yとなるので、剰余606 + 463 X + 322 X2 + 104 Y + 183 X Y + 348 X2 Yを得て、ベクトルv4=(606, 463, 322, 104, 0, 183, 0, 348)を生成する。以上で、イデアル縮約装置12の、多項式ベクトル生成部32における処理を終了する。
次に、第一のイデアル縮約部12は、基底構成部33において、多項式ベクトル生成部32で生成した、4個の8次元ベクトルv1,v2,v3,v4を線形関係導出部34に入力し、出力として複数の4次元ベクトルm1,m2,...を得る。線形関係導出部34は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術に属するので、以下、線形関係導出部34の動作はその概略のみ示す。
【０２１０】
線形関係導出部34は、まず、入力された4個の8次元ベクトルv1,v2,v3,v4を順に並べて4x8行列
【数３２】
0004304937.tif 000033
を構成する。
【０２１１】
次に、線形関係導出部34は、行列MRに4次元の単位行列を連結し、
【数３３】
0004304937.tif 000034
を構成する。
【０２１２】
次に、線形関係導出部34は、i行目の定数倍をi+1行目から4行目に加えることで(i=1,2)、行列M'Rを三角化し以下の行列mを得る。
【数３４】
0004304937.tif 000035
【０２１３】
よく知られているように行列mの3から4行目の第9成分以降よりなるベクトルは、入力された4個の8次元ベクトルv1,v2,v3,v4の全ての1次独立な線形従属関係Σi=14 mji vi = 0 (j=1,2,...,)を表すベクトル{(m1,1,m1,2,...,m1,4),(m2,1,m2,2,...,m2,4),...}である。線形関係導出部34は、行列mの3行目の第9成分以降よりなるベクトルm1=(835, 27, 1, 0)および行列mの4行目の第9成分以降よりなるベクトルm2=(312, 661, 0, 1)を出力する。
【０２１４】
第一のイデアル縮約部12の基底構成部33における処理の説明に戻る。次に、イデアル縮約部12は、図15のグレブナ基底構成用テーブルを参照し前記値d＝2を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0であるベクトルが前記複数のベクトルm1=(835, 27, 1, 0)およびm2=(312, 661, 0, 1)中に存在しないレコードを検索する。第6レコードの位数フィールドの値は2であり、第6レコードの成分番号リスト3,4に対応する成分がすべて0であるベクトルはm1,m2には存在していないので、検索結果として第6レコードが得られる。
【０２１５】
さらに第6レコードの第一ベクトル型の値は(*,*,1,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm1=(835, 27, 1, 0)と合致するので、ベクトルm1を、代数曲線パラメータファイルAの単項式順序1, X, X2, Yの各単項式の係数の列とみなし、多項式f1=835 + 27 X + X2を生成する。同様にして、第6レコードの第二ベクトル型の値は(*,*,0,1)であり(記号*はすべての数を表すと解釈する)、これはベクトルm2=(312, 661, 0, 1)と合致するので、ベクトルm2を、代数曲線パラメータファイルAの単項式順序1, X, X2, Yの各単項式の係数の列とみなし、多項式f2=312 + 661 X + Yを生成する。第6レコードの第三ベクトル型の値はnullなので、無視される。最後に、イデアル縮約装置12は、多項式の集合J*={f1,f2}={835 + 27 X + X2, 312 + 661 X + Y}を構成し、出力する。以上で、第一のイデアル縮約部12の動作は終了する。
【０２１６】
次に、第二のイデアル縮約部13が、図3に示す機能ブロックの処理の流れにしたがって、図12の代数曲線パラメータファイルAおよび第一のイデアル縮約部12が出力したグレブナ基底J*={f1,f2}={835 + 27 X + X2, 312 + 661 X + Y}を入力として以下のように動作する。まず、第二のイデアル縮約部13は、図3のイデアル型分類部31において、図13のイデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルJ*の型と一致するレコードを検索し第6レコードを得て、第6レコードのイデアル型番号フィールドの値N＝21および縮約位数フィールドの値d=2を取得する。
【０２１７】
次に、イデアル縮約部13は、前記d=2が0でないことを確認し、多項式ベクトル生成部32において、図14の単項式リストテーブルを参照し前記d=2を位数フィールドの値に持つレコードを検索し第3レコードを得て、第3レコードの単項式リストフィールドに記述されている単項式のリスト1, X, X2, Yを取得する。さらに、イデアル縮約部13は、J*の第1要素f=835 + 27 X + X2および第2要素g=312 + 661 X + Yを取得し(J*には第3要素はないので第3番目の多項式hは用いない)、代数曲線パラメータファイルAの係数リスト0,7,0,0,0,0,0,0,1,1を、代数曲線パラメータファイルAの単項式順序1, X, X2, Y, X3, XY, X4, X2 Y, X5, Y2の各単項式の係数の列とみなして、定義多項式F=Y2+X5+7Xを生成する。
【０２１８】
次に、イデアル縮約部13は、前記単項式のリスト1, X, X2, YのそれぞれのMi(1<=i<=4)に対して、Miと多項式gの積Mi gの、多項式fおよびFによる剰余式riを計算し、その係数を、代数曲線パラメータファイルAの単項式順序1, X, X2, Y, X3, XY, X4, X2 Yの順にならべて、ベクトルviを生成する。すなわち、まず、第一番目の単項式M1=1に対して、1・g = 312 + 661 X + Yをf=835 + 27 X + X2およびF= Y2+X5+7Xで割ると、g = 0・f + 0・F + 312 + 661 X + Yとなるので、剰余312 + 661 X + Yを得て、ベクトルv1=(312, 661, 0, 1, 0, 0)を生成する。
【０２１９】
次に、第二番目の単項式M2=Xに対して、X g = X (312 + 661 X + Y)をf=835 + 27 X + X2およびF= Y2+X5+7Xで割ると、X g = 661 f + 0・F + 997 + 627 X + X Yとなるので、剰余997 + 627 X + X Yを得て、ベクトルv2=(997, 627, 0, 0, 0, 1)を生成する。次に、第三番目の単項式M3=X2に対して、X2 g = X2 (312 + 661 X + Y)をf=835 + 27 X + X2およびF= Y2+X5+7Xで割ると、X2 g = (627 + 661 X + Y) f + 0・F + 126 + 212 X + 174 Y + 982 X Yとなるので、剰余126 + 212 X + 174 Y + 982 X Yを得て、ベクトルv3=(126, 212, 0, 174, 0, 982)を生成する。
【０２２０】
最後に、第四番目の単項式M4=Yに対して、Y g = Y (312 + 661 X + Y)をf=835 + 27 X + X2およびF= Y2+X5+7Xで割ると、Y g = (827 + 106 X + 27 X2 + 1008 X3) f + 1・F + 620 + 144 X + 312 Y + 661 X Yとなるので、剰余620 + 144 X + 312 Y + 661 X Yを得て、ベクトルv4=(620, 144, 0, 312, 0, 661)を生成する。以上で、第二のイデアル縮約部13の多項式ベクトル生成部32における処理を終了する。
【０２２１】
次に、この第二のイデアル縮約部13は、基底構成部33において、多項式ベクトル生成部32で生成した、4個の6次元ベクトルv1,v2,v3,v4を線形関係導出部34に入力し、出力として複数の4次元ベクトルm1,m2,...を得る。線形関係導出部34は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術に属するので、以下、線形関係導出部34の動作はその概略のみ示す。
【０２２２】
線形関係導出部34は、まず、入力された4個の6次元ベクトルv1,v2,v3,v4を順に並べて4x6行列
【数３５】
0004304937.tif 000036
を構成する。
【０２２３】
次に、線形関係導出部34は、行列MRに4次元の単位行列を連結し、
【数３６】
0004304937.tif 000037
を構成する。
【０２２４】
次に、線形関係導出部34は、i行目の定数倍をi+1行目から4行目に加えることで(i=1,2)、行列M'Rを三角化し以下の行列mを得る。
【数３７】
0004304937.tif 000038
【０２２５】
よく知られているように行列mの3から4行目の第7成分以降よりなるベクトルは、入力された4個の6次元ベクトルv1,v2,v3,v4の全ての1次独立な線形従属関係Σi=14 mji vi = 0 (j=1,2,...,)を表すベクトル{(m1,1,m1,2,...,m1,4),(m2,1,m2,2,...,m2,4),...}である。
【０２２６】
線形関係導出部34は、行列mの3行目の第7成分以降よりなるベクトルm1=(835, 27, 1, 0)および、行列mの4行目の第7成分以降よりなるベクトルm2=(697, 348, 0, 1)を出力する。イデアル縮約部13の基底構成部33における処理の説明に戻る。次に、イデアル縮約部13は、図15のグレブナ基底構成用テーブルを参照し前記値d＝2を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0であるベクトルが前記複数のベクトルm1=(835, 27, 1, 0) およびm2=(697, 348, 0, 1)中に存在しないレコードを検索する。第6レコードの位数フィールドの値は2であり、第6レコードの成分番号リスト3,4がすべて0であるベクトルはm1,m2には存在していないので、検索結果として第6レコードが得られる。
【０２２７】
さらに、第6レコードの第一ベクトル型の値は(*,*,1,0)であり(記号*はすべての数を表すと解釈する)、これはベクトルm1=(835, 27, 1, 0)と合致するので、ベクトルm1を、代数曲線パラメータファイルAの単項式順序1, X, X2, Yの各単項式の係数の列とみなし、多項式f1=835 + 27 X + X2を生成する。同様にして、第6レコードの第二ベクトル型の値は(*,*,0,1)であり(記号*はすべての数を表すと解釈する)、これはベクトルm2=(697, 348, 0, 1)と合致するので、ベクトルm2を、代数曲線パラメータファイルAの単項式順序1, X, X2, Yの各単項式の係数の列とみなし、多項式f2=697 + 348 X + Yを生成する。第6レコードの第三ベクトル型の値はnullなので、無視される。最後に、イデアル縮約部13は、多項式の集合J**={f1,f2}={835 + 27 X + X2, 697 + 348 X + Y }を構成し、出力する。以上で、イデアル縮約部13の動作は終了する。
【０２２８】
最後に、図1のヤコビ群加算装置において、第二のイデアル縮約部13の出力したグレブナ基底J**= {835 + 27 X + X2, 697 + 348 X + Y }が出力装置より出力される。
【０２２９】
【発明の効果】
本発明を用いることにより、Cab曲線のヤコビ群における加算を高速に計算することができ、Cab曲線の実用性を向上させることができるという効果がある。
【図面の簡単な説明】
【図１】本発明の実施の形態を示すブロック図である。
【図２】イデアル合成部の機能ブロック図である。
【図３】イデアル縮約部の機能ブロック図である。
【図４】C34曲線に対する代数曲線パラメータファイルＡの一具体例である。
【図５】C34曲線に対するイデアル型テーブルの一具体例である。
【図６】C34曲線に対する単項式リストテーブルの一具体例である。
【図７】C34曲線に対するグレブナ基底構成用テーブルの一具体例である。
【図８】C27曲線に対する代数曲線パラメータファイルの一具体例である。
【図９】C27曲線に対するイデアル型テーブルの一具体例である。
【図１０】C27曲線に対する単項式リストテーブルの一具体例である。
【図１１】C27曲線に対するグレブナ基底構成用テーブルの一具体例である。
【図１２】C25曲線に対する代数曲線パラメータファイルの一具体例である。
【図１３】C25曲線に対するイデアル型テーブルの一具体例である。
【図１４】C25曲線に対する単項式リストテーブルの一具体例である。
【図１５】C25曲線に対するグレブナ基底構成用テーブルの一具体例である。
【図１６】本発明によるヤコビ群加算アルゴリズムの演算量を示す図表である。
【符号の説明】
１０，２０，３０  代数曲線パラメータファイルＡ
１１  イデアル合成部
１２  第一のイデアル縮約部
１３  第二のイデアル縮約部
２１，３１  イデアル型分類部
２２  単項式ベクトル生成部
２３，３３  基底構成部
２４，３４  線形関係導出部
２５，３５  イデアル型テーブル
２６，３６  単項式リストテーブル
２７，３７  グレブナ基底構成用テーブル
【図１】
0004304937.tif 000039
【図２】
0004304937.tif 000040
【図３】
0004304937.tif 000041
【図４】
0004304937.tif 000042
【図５】
0004304937.tif 000043
【図６】
0004304937.tif 000044
【図７】
0004304937.tif 000045
【図８】
0004304937.tif 000046
【図９】
0004304937.tif 000047
【図１０】
0004304937.tif 000048
【図１１】
0004304937.tif 000049
【図１２】
0004304937.tif 000050
【図１３】
0004304937.tif 000051
【図１４】
0004304937.tif 000052
【図１５】
0004304937.tif 000053
【図１６】
0004304937.tif 000054