JP4304937B2 - ヤコビ群要素加算装置 - Google Patents
ヤコビ群要素加算装置 Download PDFInfo
- Publication number
- JP4304937B2 JP4304937B2 JP2002240034A JP2002240034A JP4304937B2 JP 4304937 B2 JP4304937 B2 JP 4304937B2 JP 2002240034 A JP2002240034 A JP 2002240034A JP 2002240034 A JP2002240034 A JP 2002240034A JP 4304937 B2 JP4304937 B2 JP 4304937B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- ideal
- monomial
- field
- order
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
【産業上の利用分野】
本発明はヤコビ群要素加算装置に関し、特に情報セキュリティ技術としての暗号技術である離散対数型暗号の一種である代数曲線のヤコビ群を用いた離散対数型暗号(以下、代数曲線暗号と呼ぶ)技術に関するものである。
【0002】
【従来の技術】
代数曲線暗号の中で、最も実用化が進んでいるのは、楕円曲線暗号である。しかし、楕円曲線暗号で用いられる楕円曲線は一般の代数曲線に比べて非常に特殊な曲線である。その特殊性を用いた攻撃法が将来発見される危惧がある。そのため、より安全性を確保するためには、より特殊性の低い、一般的な代数曲線を用いることが望ましい。そのような、より一般的な代数曲線を用いることができる代数曲線暗号としてCab曲線暗号が知られている。
【0003】
しかしながら、楕円曲線暗号にくらべCab曲線暗号は産業界で用いられていない。その大きな理由は、有田 正剛著, Cab 曲線のヤコビアン群加算アルゴリズムとその離散対数型暗号への応用、電子情報通信学会和文論文誌、J82-A巻, 8号, 1291--1299, 1999に示されている、従来のCab曲線のヤコビ群における加算アルゴリズムが楕円曲線のヤコビ群における加算アルゴリズムに比べ、数十倍程度遅いため、Cab曲線暗号では、楕円曲線暗号にくらべ、暗号化復号化の処理効率が著しく悪いためである。
【0004】
また、原澤 隆一、鈴木 譲著、ア・ファースト・ヤコビアン・グループ・アリスメティック・スキーム・フォー・アルジェブレイク・カーブ・クリプトグラフィ、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曲線のヤコビ群における加算アルゴリズムが提案されているが、アルゴリズムの漸近的な計算量は与えられているものの、実装実験における実行速度データは示されておらず、また他者による実装実験の報告もなく、現実的にどの程度の実行速度が得られるか不明である。
【0005】
【発明が解決しようとする課題】
上に見たように、Cab曲線のヤコビ群における加算アルゴリズムの非効率さが当該曲線の暗号の実用化を阻んでおり、よってCab曲線のヤコビ群における加算アルゴリズムを高速化することが要求されている。
本発明はかかる要求に鑑みてなされたものであつて、その目的とするところは、Cab曲線のヤコビ群における加算アルゴリズムを高速化することが可能なヤコビ群要素加算装置を提供することにある。
【0006】
【課題を解決するための手段】
本発明によるヤコビ群要素加算装置は、有限体上定義された、
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 ,v 2 ,...,v n に対して、掃き出し法を用いて、その全ての1次独立な線形従属関係Σ i m j,i v i = 0 (j=1,2,...) を表す複数のベクトル{m 1 =(m 1,1 ,m 1,2 ,...,m 1,n ),m 2 =(m 2,1 ,m 2,2 ,...,m 2,n ),...}を出力する線形関係導出手段と、
レコード番号フィールド、イデアル型番号フィールド、位数フィールドおよびイデアル型フィールドからなるイデアル型テーブルと、
レコード番号フィールド、位数フィールドおよび単項式リストフィールドからなる単項式リストテーブルと、
レコード番号フィールド、位数フィールド、成分番号リストフィールド、第一ベクトル型フィールド、第二ベクトル型フィールドおよび第三ベクトル型フィールドからなるグレブナ基底構成用テーブルと、
前記代数曲線パラメータファイルを取得し、入力されたグレブナ基底I 1 およびI 2 それぞれに対して、前記イデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルI i (i=1,2) の型と一致するレコードを検索し、検索されたレコードのイデアル型番号フィールドの値N i および位数フィールドの値d i を取得するイデアル型分類手段と、
前記位数フィールドの値d 1 およびd 2 の和d 3 =d 1 +d 2 を計算し、単項式リストテーブルを参照し前記d 3 を位数フィールドの値に持つレコードR を検索し、前記レコードR の単項式リストフィールドに記述されている単項式のリストM 1 ,M 2 ,...を取得し、I 1 とI 2 が異なるときには、前記各単項式M i をI 1 で割った剰余式r i を計算し、前記代数曲線パラメータファイルに記述された単項式順序に従って剰余式r i の係数からなるベクトルw (1) 1 を生成し、さらに、M i をI 2 で割った剰余式s i を計算し、代数曲線パラメータファイルA に記述された単項式順序に従って剰余式s i の係数からなるベクトルw (1) 2 を生成し、上記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 (M i ) D Y (F) - D Y (M i )D X (F) をI 1 で割った剰余式s i を計算し、前記代数曲線パラメータファイルに記述された単項式順序に従って剰余式s i の係数から成るベクトルw (1) 2 を生成し、上記2 つのベクトルw (1) 1 とw (1) 2 を連結してベクトルv i を生成する単項式ベクトル生成手段と、
前記複数のベクトルv 1 ,v 2 ,...を前記線形関係導出装置に入力し、出力として複数のベクトルm 1 ,m 2 ,...を得て、前記グレブナ基底構成用テーブルを参照し前記値d 3 を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0であるベクトルが前記複数のベクトルm 1 ,m 2 ,...中に存在しないレコードR 2 を検索し、前記複数のベクトルm 1 ,m 2 ,.. 中から、前記レコードR 2 の第一ベクトル型に一致するベクトルm を選択し、前記代数曲線パラメータファイルに記述された単項式順序に従ってベクトルm の成分の値を係数とする多項式f 1 を生成し、以下、同様にして、第二べクトル型に一致するベクトルを用いて多項式f 2 を、また第三ベクトル型に一致するベクトルを用いて多項式f 3 を生成し、多項式の集合J={f 1 ,f 2 ,f 3 } を得て、前記グレブナ基底J として出力する基底構成手段とを有することを特徴とする。
【0007】
【作用と原理】
[Cab曲線とそのヤコビ群]
本発明で扱う、Cab曲線Cは、互いに素な2つの自然数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の因子のなす群をDC 0(k)とおき、主因子のなす群をPC(k)とおく。
【0008】
本発明でその加算アルゴリズムを求めたいヤコビ群JC(k)は、
JC(k) = DC 0(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)
と定義される。
【0009】
一般に、非特異な代数曲線に対して、曲線上の因子と座標環のイデアルとは同一視することができ、そのヤコビ群とイデアル類群は自然に同型であることが知られている。特に、Cab曲線Cのヤコビ群JC(k)は座標環Rのイデアル類群HR(k)と自然に同型である。アルゴリズムの実装には因子よりもイデアルが便利なので、以下Cab曲線Cのヤコビ群JC(k)は座標環Rのイデアル類群HR(k)として扱う。
【0010】
[グレブナ基底に関する準備]
イデアル類群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)と書く。
【0011】
多項式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の基底をなす。
【0012】
非特異アフィン代数曲線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)は多項式fのP∞での付値を表す。
【0013】
[Cab曲線のヤコビ群加算アルゴリズム その1]
多項式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) } )
とおく。
【0014】
このとき、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 をイデアル類の代表系として用いて、以下のイデアル類群乗算=ヤコビ群加算アルゴリズムを得る。
【0015】
[ヤコビ群加算アルゴリズム1]
入力:座標環Rのreduced ideals I1, I2
出力:イデアル積I1・I2に同値な reduced ideal I3
1. J ← I1・I2
2. J* ← (fJ) : J
3. I3 ← (fJ*) : J*
【0016】
[イデアルの分類]
上記ヤコビ群加算アルゴリズム1を効率的でかつ実装しやすいプログラムとして実現するために、ヤコビ群加算アルゴリズム1の実行中に現れるイデアルを分類する。以下、簡単のため、C34曲線(すなわち、a=3,b=4としたCab曲線)を対象として説明するが、一般のCab曲線に対しても同様である。C34曲線の種数は3なので、ヤコビ群加算アルゴリズム1の実行中に現れるイデアルの位数は6以下である。それらのC34順序におけるグレブナ基底は位数ごとに以下のように分類される。ただし、以降、イデアルのグレブナ基底にC34曲線Cの定義式Fが現れても、Fは省略して書かない。また、グレブナ基底を構成する各多項式の係数ai,bj,ckは全てkの元である。
【0017】
(位数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のイデアルと呼ぶ。
【0018】
一般に、イデアル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において一次独立とは限らない。
【0019】
まず、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)に対応する。
【0020】
タイプ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と、ただちに計算できるので、省略している。
【0021】
次に、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のイデアルとよぶ。
【0022】
タイプ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に対応)。
【0023】
次に、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に対応)。
【0024】
Y(以下の項)をleading termとする多項式fはdeg((f)0) = -vP ∞(f)=4 < 6より、位数6のイデアルIに対応する6点で同時に消えることはない。よって、V=R/Iにおいて最初から3つの単項式1,X,Yは必ず一次独立であり、以上で位数6のイデアルの分類は完了した。
【0025】
(位数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 }
【0026】
(位数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 }
【0027】
(位数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}
【0028】
(位数2のイデアル)
位数2のイデアルIも同様にして、以下のようにタイプ21とタイプ22に分類される。
タイプ21のイデアルのグレブナ基底 = {Y + a2 X + a1, X2 + b2 X + b1 }
タイプ22のイデアルのグレブナ基底 = {X + a1, Y2 + b2 Y + b1 }
【0029】
(位数1のイデアル)
位数1のイデアルはもちろん以下のタイプ11のみである。
タイプ11のイデアルのグレブナ基底 = {X + a1,Y + b1 }
【0030】
[注意]
以上のイデアルタイプのうち、タイプ65,44,33は主イデアルであり、ヤコビ群要素として単位元を表す。また、以上のイデアルタイプのうち、reduced なイデアルタイプは31,21,22,11のみである。例えば、タイプ32のイデアルがreducedでないのは以下のようにしてわかる。
【0031】
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**.
【0032】
[C34曲線のヤコビ群加算アルゴリズム その2]
定義式Fをもつ体k上定義されたC34曲線Cの座標環をR=k[X,Y]/Fとおく。ヤコビ群加算アルゴリズム1をより具体化し、その実行速度を見積もる。ただし、以下では、離散対数型暗号への応用を念頭にして、体kの位数は十分に大きいとする。
【0033】
(合成操作1)
まず、異なるイデアルI1,I2に対して、ヤコビ群加算アルゴリズム1の第1ステップ、以下合成操作1と呼ぶ、を考察する。すなわち、イデアル積J=I1・I2に対してfJを求める。そのためには、イデアル積Jのグレブナ基底を求めればよい(fJはその第一要素)。C34曲線の種数は3なので、加算対象となるイデアルの位数は3以下である。よって、そのタイプは11,21,22,31,32のいずれかである。ここでは、イデアルI1,I2がともにタイプ31の場合を述べるが、他の場合も同様である。
【0034】
I1,I2を共にタイプ31の異なるイデアルとする。I1,I2がヤコビ群からランダムに選ばれたとすると、体kの位数は十分に大きいとしているので、イデアルIに対してその解集合をV(I)とかくとき、ほとんどの場合、
V(I1) ∩ V(I2) = φ (1)
である(φは空集合を表す)。条件(1)を満たさない場合も、R1 + R2 = 0となる要素Riを生成し、I1 + I2の代わりに(I1+R1)+(I2+R2)を計算すれば、条件(1)が成り立つ場合に帰着する。また、条件(1)を満たさない場合は、非常に稀である(定義体kのサイズをqとするとき1/q程度)ので、アルゴリズムの効率を評価する際には、条件(1)を満たしている場合のみ考察すればよい。そこで、以下ではI1,I2に対して条件(1)を仮定する。
【0035】
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における線形関係を求めればよい。
【0036】
イデアルIi (i=1,2)はタイプ31なので、
【数1】
である。条件(1)より、
【数2】
となる。
【0037】
ここで、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の行間の線形関係を求めればよい。
【数3】
行列MCの行間の線形関係は、よく知られているように、行縮約変換によって行列MCを三角化することにより得られ、これよりイデアルJのタイプとそのグレブナ基底を得る。詳細は実施例で述べる。
【0038】
(注意)
イデアルI1,I2に対し、条件(1)が成立しない場合は、行列MCのランクが5以下となる。I1,I2のイデアル積を計算する際、最初はこれらに対して条件(1)を仮定して計算し、行縮約変換の結果、行列MCのランクが5以下であることが判明すれば、R1 + R2 = 0となる要素Riを生成し、I1 + I2の代わりに(I1+R1)+(I2+R2)を計算すればよい。
【0039】
(合成操作2)
座標環R=k[X,Y]/Fの同じイデアルI1=I,I2=Iに対する、ヤコビ群加算アルゴリズム1の第一ステップ、以下合成操作2と呼ぶ、を考察する。すなわち、イデアル積J=I2に対して、そのグレブナ基底を求め、fJを計算する。イデアルIがタイプ31の場合を述べるが、他の場合も同様である。体kの位数は十分に大きいとしているので、ほとんどの場合、V(I)には多重点はない。 (3)
【0040】
また、アルゴリズムの効率を評価する際には、条件(3)を満たしている場合のみ考察すればよい。以下ではIに対して条件(3)を仮定する。J=I2はやはり位数6なので、そのグレブナ基底を計算するには、式(1)の単項式間の剰余環R/Jにおける船型関係を求めればよい。イデアルIはタイプ31なので、
【数4】
である。また、条件(3)より、多項式f(∈ R)がJ=I2に属するための必要十分条件は、
f ∈ I, fX FY - fY FX ∈ I
である(ここで、多項式fに対してそのXによる微分をfXと書く。fYに関しても同様。)。よって、
【数5】
である。ここで、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の行間の線形関係を求めればよい。
【0041】
【数6】
以降は、合成操作1と同様に、行縮約変換によって行列MDを三角化すれば、イデアルJのタイプとそのグレブナ基底が得られる。
【0042】
(注意)
イデアルIに対し、条件(3)が成立しない場合は、行列MDのランクが5以下となる。I2のグレブナ基底を計算する際、最初は条件(3)を仮定して計算し、行縮約変換の結果、行列MDのランクが5以下であることが判明すれば、R1 + R2 = 0となる要素Riを生成し、I + Iの代わりに(I+R1)+(I+R2)を計算すればよい。
【0043】
(還元操作)
ヤコビ群加算アルゴリズム1の第2ステップ(および第3ステップ)、以下還元操作と呼ぶ、を考察する。すなわち、位数6以下のイデアルJに対して、J* = fJ:Jのグレブナ基底を求める。以下、Jがタイプ61の場合を述べるが、その他の場合も同様である。
【0044】
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より、
【数7】
なので、上記線形関係を求めるためには、式(4)の6個の各単項式miに対して、2つのベクトルw(mi g), w(mi h)を連結して得られるk上の18次元ベクトルw(mi g): w(mi h)を行とする、以下の6 x 18行列MRの行間の線形関係を求めればよい。
【0045】
【数8】
以降は、行縮約変換によって行列MRを三角化すれば、イデアルJ*のグレブナ基底が得られる。ただし、実はほとんどの場合、行列MRそのものではなく、その6 x 3のある部分行列Mrを三角化すれば十分である。これについての詳細は次節で述べる。
【0046】
(アルゴリズムの演算量)
アルゴリズムの演算量を評価する。定義体の位数をqとおくとき、ヤコビ群のランダムな要素は、確率1/qの例外を除いて、タイプ31のイデアルで表される。また、タイプ31のイデアルに対する合成操作1,2の結果は、確率1/qの例外を除いて、タイプ61のイデアルとなる。よって、アルゴリズムの演算量を評価するには、タイプ31のイデアルを入力したときの合成操作1,2の演算量とタイプ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は
【数9】
と表示される。
【0047】
ここで、
e10,1 = a1 2 - a1a2 2 - 2a2a3b1 - a3 2c1
e10,2 = 2a1a2 - a2 3 - 2a2a3b2 - a3 2c2
e10,3 = 2a1a3 - a2 2a3 - 2a2a3b3 - a3 2c3
e10,4 = s1 2 - s1s2 2 - 2s2s3t1 - s3 2u1
e10,5 = 2s1s2 - s2 3 - 2s2s3t2 - s3 2u2
e10,6 = 2s1s3 - s2 2s3 - 2s2s3t3 - s3 2u3
これより、重複をうまく取り除けば、行列MCは高々44回の乗算で構成できることがわかる。
【0048】
行列MC’に対する行縮約変換は、その1行目から3行目までがすでに行縮約された形であり、成分が0または1であることに注意すると、3回の割算と高々6 x 6 + 6 x 5 + 6 x 4 = 90回の乗算で実行できる。以上より、合成操作1の演算量は高々逆数演算3、乗算134である。同様にして、合成操作2の演算量は高々逆数演算3、乗算214であることがわかる。行列MDが行列MCより複雑な分、演算量が増えている。
【0049】
次に、タイプ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は
【数10】
となる。
【0050】
ここで、
e4,1 = -a2 + a4 2 - a3 a6 + 3 a4 a5 a6 + a5 2 a6 2 + b3 - a5 b4 - a4 b5 - a5 a6 b5
e4,2 = -a3 + a4 a5 + a5 2 a6 + 2 a4 a6 2 + a5 a6 3 - a6 b4 - a5 b5 - a6 2 b5e5,1 = -2 a3 a5 + 2 a4 a5 2 - a2 a6 + a4 2 a6 + a5 3 a6 - a3 a6 2 + 3 a4 a5 a6 2 + a5 2 a6 3 + b2 - a4 b4 - a5 a6 b4 + a3 b6 - 2 a4 a5 b6 - a5 2 a6 b6e5,2 = -a2 + a5 3 - 2 a3 a6 + 2 a4 a5 a6 + 2 a5 2 a6 2 + 2 a4 a6 3 + a5 a6 4 + b3 - a5 b4 - a6 2 b4 - a5 2 b6 - a4 a6 b6 - a5 a6 2 b6
e6,1 = -2 a3 a4 - 2 a2 a5 + 3 a4 2 a5 - 4 a3 a5 a6 + 6 a4 a5 2 a6 - a2 a6 2 + a4 2 a6 2 + 2 a5 3 a6 2 - a3 a6 3 + 3 a4 a5 a6 3 + a5 2 a6 4 + a5 b3 + a3 b5 - 2 a4 a5 b5 - a5 2 a6 b5 + a2 b6 - a4 2 b6 + a3 a6 b6 - 3 a4 a5 a6 b6 - a5 2 a6 2 b6
e6,2 = -2 a3 a5 + 2 a4 a5 2 - 2 a2 a6 + a4 2 a6 + 2 a5 3 a6 - 3 a3 a6 2 + 5 a4 a5 a6 2 + 3 a5 2 a6 3 + 2 a4 a6 4 + a5 a6 5 + b2 + a6 b3 - a5 2 b5 - a4 a6 b5 - a5 a6 2 b5 + a3 b6 - a4 a5 b6 - a5 2 a6 b6 - 2 a4 a6 2 b6 - a5 a6 3 b6e6,3 = -a5 2 - 2 a4 a6 - 3 a5 a6 2 - a6 4 + b4 + a6 b5 + a5 b6 + a6 2 b6
である。
【0051】
これより、行列Mrの(2,2)成分d=-a5 - a6 2 + 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であることがわかる。
【0052】
以上まとめると、本発明のヤコビ群加算アルゴリズムの演算量は図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倍で実行できることがわかる。
【0053】
【発明の実施の形態】
以下に、図面を用いて本発明の実施の形態につき詳細に説明する。図1は本発明の実施の形態の機能ブロック図であり、図2は図1のイデアル合成部の例を示すブロック図である。図3は図1の第一及び第二のイデアル縮約部の例を示すブロック図である。
【0054】
まず、C34曲線を用いた場合の実施例を示す。本実施例では、代数曲線パラメータファイルとして図4の代数曲線パラメータファイルを、イデアル型テーブルとして図5のイデアル型テーブルを、単項式リストテーブルとして図6の単項式リストテーブルを、グレブナ基底構成用テーブルとして図7のグレブナ基底構成用テーブルを用いる。
【0055】
図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}
が入力されたとする。
【0056】
まず、イデアル合成部11が、図2に示す機能ブロックの処理の流れにしたがって、上記代数曲線パラメータファイルA、上記グレブナ基底I1およびI2を入力として以下のように動作する。まず、イデアル合成装置11は、図2のイデアル型分類部21において、図5のイデアル型テーブル25を参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルI1の型と一致するレコードを検索し第14レコードを得て、第14レコードのイデアル型番号フィールドの値N1=31および位数フィールドの値d1=3を取得する。
【0057】
同様に、イデアル型が入力イデアルI2の型と一致するレコードを検索し第14レコードを得て、第14レコードのイデアル型番号フィールドの値N2=31および位数フィールドの値d2=3を取得する。
【0058】
次に、イデアル合成部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を取得する。
【0059】
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)を生成する。
【0060】
すなわち、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)を生成する。
【0061】
次に、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)を生成する。
【0062】
次に、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)を生成する。
【0063】
次に、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)を生成する。
【0064】
次に、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)を生成する。
【0065】
次に、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)を生成する。
【0066】
次に、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)を生成する。
【0067】
次に、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)を生成する。
【0068】
次に、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)を生成する。
【0069】
次に、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における処理を終了する。
【0070】
次に、イデアル合成部11は、基底構成部23において、単項式ベクトル生成部22で生成した、10個の6次元ベクトルv1,v2,v3,v4,v5,v6,v7,v8,v9,v10を線形関係導出部24に入力し、出力として複数の10次元ベクトルm1,m2,...を得る。線形関係導出部24は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術であるので、以下、線形関係導出部24の動作はその概略のみ示す。
【0071】
線形関係導出部24は、まず、入力された10個の6次元ベクトルv1,v2,v3,v4,v5,v6,v7,v8,v9,v10を順に並べて10x6行列
【数11】
を構成する。
【0072】
次に、線形関係導出部24は、行列MCに10次元の単位行列を連結し、
【数12】
を得る。
【0073】
次に、線形関係導出部24は、i行目の定数倍をi+1行目から10行目に加えることで(i=1,2,...,6)、行列M'Cを三角化し以下の行列mを得る。
【数13】
【0074】
よく知られているように行列mの7から10行目の第7成分以降よりなるベクトルは、入力された10個の6次元ベクトルv1,v2,v3,v4,v5,v6,v7,v8,v9,v10の全ての1次独立な線形従属関係Σi 10 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における処理の説明に戻る。
【0075】
次に、イデアル合成装置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) 中に存在しないレコードを検索する。第1レコードの位数フィールドの値は6であり、第1レコードの成分番号リスト7,8,9,10がすべて0であるベクトルはm1,m2,m3,m4には存在していないので、検索結果として第1レコードが得られる。
【0076】
さらに第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を生成する。
【0077】
同様にして、第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
を生成する。
【0078】
同様にして、第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の動作は終了する。
【0079】
次に、第一のイデアル縮約部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}
を入力として以下のように動作する。
【0080】
まず、イデアル縮約部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を取得する。
【0081】
さらに、イデアル縮約部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を生成する。
【0082】
次に、イデアル縮約部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を生成する。
【0083】
すなわち、まず、第一番目の単項式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)を生成する。
【0084】
また、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)を得る。
【0085】
次に、第二番目の単項式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)を生成する。
【0086】
また、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)を得る。
【0087】
次に、第三番目の単項式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)を生成する。
【0088】
また、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)を得る。
【0089】
次に、第四番目の単項式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)を生成する。
【0090】
また、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)を得る。
【0091】
次に、第五番目の単項式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)を生成する。
【0092】
また、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)を得る。
【0093】
次に、第六番目の単項式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)を生成する。
【0094】
また、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)を得る。
【0095】
最後に、第七番目の単項式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)を生成する。
【0096】
また、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における処理を終了する。
【0097】
次に、第一のイデアル縮約部12は、基底構成部33において、多項式ベクトル生成部32で生成した、7個の18次元ベクトルv1,v2,v3,v4,v5,v6,v7を線形関係導部34に入力し、出力として複数の7次元ベクトルm1,m2,...を得る。線形関係導出部34は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術に属するので、以下、線形関係導出装置34の動作はその概略のみ示す。
【0098】
線形関係導出部34は、まず、入力された7個の18次元ベクトルv1,v2,v3,v4,v5,v6,v7を順に並べて7x18行列
【数14】
を構成する。
【0099】
次に、線形関係導出装置34は、行列MRに7次元の単位行列を連結し、
【数15】
を構成する。
【0100】
次に、線形関係導出装置34は、i行目の定数倍をi+1行目から7行目に加えることで(i=1,2,3)、行列M'Rを三角化し以下の行列mを得る。
【0101】
【数16】
よく知られているように行列mの4から7行目の第19成分以降よりなるベクトルは、入力された7個の18次元ベクトルv1,v2,v3,v4,v5,v6,v7の全ての1次独立な線形従属関係Σi 7 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)を出力する。
【0102】
第一のイデアル縮約部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レコードが得られる。
【0103】
さらに、第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を生成する。
【0104】
同様にして、第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を生成する。
【0105】
同様にして、第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を生成する。
【0106】
最後に、イデアル縮約部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の動作は終了する。
【0107】
次に、第二のイデアル縮約部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を取得する。
【0108】
次に、イデアル縮約部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を生成する。
【0109】
次に、イデアル縮約部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を生成する。
【0110】
すなわち、まず、第一番目の単項式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)を得る。
【0111】
次に、第二番目の単項式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)を生成する。
【0112】
また、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)を得る。
【0113】
次に、第三番目の単項式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)を生成する。
【0114】
また、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)を得る。
【0115】
次に、第四番目の単項式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)を生成する。
【0116】
また、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)を得る。
【0117】
次に、第五番目の単項式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)を生成する。
【0118】
また、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)を得る。
【0119】
次に、第六番目の単項式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)を生成する。
【0120】
また、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)を得る。
【0121】
最後に、第七番目の単項式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)を生成する。
【0122】
また、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における処理を終了する。
【0123】
次に、第二のイデアル部装置13は、基底構成部33において、多項式ベクトル生成部32で生成した、7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7を線形関係導出部34に入力し、出力として複数の7次元ベクトルm1,m2,...を得る。線形関係導出部34は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術に属するので、以下、線形関係導出部34の動作はその概略のみ示す。
【0124】
線形関係導出部34は、まず、入力された7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7を順に並べて7x12行列
【数17】
を構成する。
【0125】
次に、線形関係導出装置34は、行列MRに7次元の単位行列を連結し、
【数18】
を構成する。
【0126】
次に、線形関係導出装置34は、i行目の定数倍をi+1行目から7行目に加えることで(i=1,2,3)、行列M'Rを三角化し以下の行列mを得る。
【数19】
【0127】
よく知られているように行列mの4から7行目の第13成分以降よりなるベクトルは、入力された7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7の全ての1次独立な線形従属関係Σi 7 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)を出力する。
【0128】
第二のイデアル縮約部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レコードが得られる。
【0129】
さらに第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を生成する。
【0130】
同様にして、第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を生成する。
【0131】
同様にして、第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の動作は終了する。
【0132】
最後に、図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のグレブナ基底構成用テーブルを用いる。
【0133】
図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}
が入力されたとする。
【0134】
まず、イデアル合成部11が、図2に示す機能ブロックの処理の流れにしたがって、図8の代数曲線パラメータファイルA、上記グレブナ基底I1およびI2を入力として以下のように動作する。イデアル合部11は、まず、図2のイデアル型分類部21において、図9のイデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルI1の型と一致するレコードを検索し第11レコードを得て、第11レコードのイデアル型番号フィールドの値N1=31および位数フィールドの値d1=3を取得する。同様に、イデアル型が入力イデアルI2の型と一致するレコードを検索し第11レコードを得て、第11レコードのイデアル型番号フィールドの値N2=31および位数フィールドの値d2=3を取得する。
【0135】
次に、イデアル合成部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)を生成する。
【0136】
さらに、図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)を生成する。
【0137】
次に、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)を生成する。
【0138】
次に、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)を生成する。
【0139】
次に、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)を生成する。
【0140】
次に、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)を生成する。
【0141】
次に、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)を生成する。
【0142】
次に、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)を生成する。
【0143】
次に、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)を生成する。
【0144】
次に、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)を生成する。
【0145】
次に、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における処理を終了する。
【0146】
次に、イデアル合成部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行列
【数20】
を構成する。
【0147】
次に、線形関係導出装置24は、行列MCに10次元の単位行列を連結し、
【数21】
を得る。
次に、線形関係導出部24は、i行目の定数倍をi+1行目から10行目に加える事で(i=1,2,...,6)、行列M'Cを三角化し以下の行列mを得る。
【0148】
【数22】
よく知られているように行列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における処理の説明に戻る。
【0149】
次に、イデアル合成部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)
中に存在しないレコードを検索する。第1レコードの位数フィールドの値は6であり、第1レコードの成分番号リスト7,8,9,10に対応する成分がすべて0であるベクトルはm1,m2,m3,m4には存在していないので、検索結果として第1レコードが得られる。
【0150】
さらに第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を生成する。
【0151】
同様にして、第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の動作は終了する。
【0152】
次に、第一のイデアル縮約部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}
を入力として以下のように動作する。
【0153】
まず、イデアル縮約部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を取得する。
【0154】
さらに、イデアル縮約部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を生成する。
【0155】
次に、イデアル縮約部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)を生成する。
【0156】
次に、第二番目の単項式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)を生成する。
【0157】
次に、第三番目の単項式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)を生成する。
【0158】
次に、第四番目の単項式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)を生成する。
【0159】
次に、第五番目の単項式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)を生成する。
【0160】
次に、第六番目の単項式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)を生成する。
【0161】
最後に、第七番目の単項式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,...を得る。
【0162】
線形関係導出部34は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術に属するので、以下、線形関係導出部34の動作はその概略のみ示す。線形関係導出部34は、まず、入力された7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7を順に並べて7x12行列
【数23】
を構成する。
【0163】
次に、線形関係導出部34は行列MRに7次元の単位行列を連結し、
【数24】
を構成する。
【0164】
次に、線形関係装置装置34は、i行目の定数倍をi+1行目から7行目に加えることで(i=1,2,3)行列M'Rを三角化し以下の行列mを得る。
【数25】
よく知られているように行列mの4から7行目の第13成分以降よりなるベクトルは、入力された7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7の全ての1次独立な線形従属関係Σi=1 7 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)を出力する。
【0165】
第一のイデアル縮約部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レコードが得られる。
【0166】
さらに第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を生成する。
【0167】
同様にして、第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の動作は終了する。
【0168】
次に、第二のイデアル縮約部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を取得する。
【0169】
次に、イデアル縮約部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を生成する。
【0170】
次に、イデアル縮約部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)を生成する。
【0171】
次に、第二番目の単項式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)を生成する。
【0172】
次に、第三番目の単項式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)を生成する。
【0173】
次に、第四番目の単項式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)を生成する。
【0174】
次に、第五番目の単項式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)を生成する。
【0175】
次に、第六番目の単項式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)を生成する。
【0176】
最後に、第七番目の単項式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における処理を終了する。
【0177】
次に、このイデアル縮約装置13は、基底構成部33において、多項式ベクトル生成部32で生成した、7個の9次元ベクトルv1,v2,v3,v4,v5,v6,v7を線形関係導出部34に入力し、出力として複数の7次元ベクトルm1,m2,...を得る。線形関係導出部34は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術に属するので、以下、線形関係導出部34の動作はその概略のみ示す。
【0178】
線形関係導出部34は、まず、入力された7個の9次元ベクトルv1,v2,v3,v4,v5,v6,v7を順に並べて7x9行列
【数26】
を構成する。
【0179】
次に、線形関係導出部34は、行列MRに7次元の単位行列を連結し、
【数27】
を構成する。
【0180】
次に、線形関係導出部34は、i行目の定数倍をi+1行目から7行目に加えることで(i=1,2,3)、行列M' Rを三角化し以下の行列mを得る。
【数28】
【0181】
よく知られているように行列mの4から7行目の第10成分以降よりなるベクトルは、入力された7個の12次元ベクトルv1,v2,v3,v4,v5,v6,v7の全ての1次独立な線形従属関係Σi 7 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)を出力する。
【0182】
第二のイデアル縮約部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レコードが得られる。
【0183】
さらに第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を生成する。
【0184】
同様にして、第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なので、無視される。
【0185】
最後に、イデアル縮約部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のグレブナ基底構成用テーブルを用いる。
【0186】
図1のヤコビ群要素加算装置において、図12の代数曲線パラメータファイルAおよび代数曲線パラメータファイルA で指定されたC25曲線のヤコビ群の要素を表す、代数曲線パラメータファイルAで指定された代数曲線の座標環のイデアルのグレブナ基底
I1 = {729 + 88 X + X2, 475 + 124 X + Y}
および
I2 = {180 + 422 X + X2, 989 + 423 X + Y}
が入力されたとする。
【0187】
まず、イデアル合成部11が、図2に示す機能ブロックの処理の流れにしたがって、図12の代数曲線パラメータファイルA、上記グレブナ基底I1およびI2を入力として以下のように動作する。イデアル合成部11は、まず、図2のイデアル型分類部21において、図13のイデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルI1の型と一致するレコードを検索し第6レコードを得て、第6レコードのイデアル型番号フィールドの値N1=21および位数フィールドの値d1=2を取得する。同様に、イデアル型が入力イデアルI2の型と一致するレコードを検索し第6レコードを得て、第6レコードのイデアル型番号フィールドの値N2=21および位数フィールドの値d2=2を取得する。
【0188】
次に、イデアル合成部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)を生成する。
【0189】
さらに、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)を生成する。
【0190】
次に、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)を生成する。
【0191】
次に、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)を生成する。
【0192】
次に、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)を生成する。
【0193】
次に、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)を生成する。
【0194】
さらに、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)を生成する。
【0195】
さらに、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)を生成する。
【0196】
最後に、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における処理を終了する。
【0197】
次に、イデアル合成部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行列
【数29】
を構成する。
【0198】
次に、線形関係導出部24は、行列MCに7次元の単位行列を連結し、
【数30】
を得る。
【0199】
次に、線形関係導出部24は、i行目の定数倍をi+1行目から7行目に加えることで(i=1,2,...,4)、行列M'Cを三角化し、以下の行列mを得る。
【数31】
【0200】
よく知られているように行列mの5から7行目の第5成分以降よりなるベクトルは、入力された7個の4次元ベクトルv1,v2,v3,v4,v5,v6,v7の全ての1次独立な線形従属関係Σi=1 7 mji vi = 0 (j=1,2,...,)を表すベクトル{(m1,1,m1,2,...,m1,7),(m2,1,m2,2,...,m2,7),...}である。
【0201】
線形関係導出部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)を出力する。
【0202】
イデアル合成部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)中に存在しないレコードを検索する。第1レコードの位数フィールドの値は4であり、第1レコードの成分番号リスト5,6,7に対応する成分がすべて0であるベクトルはm1,m2,m3には存在していないので、検索結果として第1レコードが得られる。
【0203】
さらに第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を生成する。
【0204】
同様にして、第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の動作は終了する。
【0205】
次に、第一のイデアル縮約部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を取得する。
【0206】
次に、イデアル縮約部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を生成する。
【0207】
次に、イデアル縮約部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)を生成する。
【0208】
次に、第二番目の単項式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)を生成する。
【0209】
最後に、第四番目の単項式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の動作はその概略のみ示す。
【0210】
線形関係導出部34は、まず、入力された4個の8次元ベクトルv1,v2,v3,v4を順に並べて4x8行列
【数32】
を構成する。
【0211】
次に、線形関係導出部34は、行列MRに4次元の単位行列を連結し、
【数33】
を構成する。
【0212】
次に、線形関係導出部34は、i行目の定数倍をi+1行目から4行目に加えることで(i=1,2)、行列M'Rを三角化し以下の行列mを得る。
【数34】
【0213】
よく知られているように行列mの3から4行目の第9成分以降よりなるベクトルは、入力された4個の8次元ベクトルv1,v2,v3,v4の全ての1次独立な線形従属関係Σi=1 4 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)を出力する。
【0214】
第一のイデアル縮約部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レコードが得られる。
【0215】
さらに第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の動作は終了する。
【0216】
次に、第二のイデアル縮約部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を取得する。
【0217】
次に、イデアル縮約部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を生成する。
【0218】
次に、イデアル縮約部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)を生成する。
【0219】
次に、第二番目の単項式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)を生成する。
【0220】
最後に、第四番目の単項式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における処理を終了する。
【0221】
次に、この第二のイデアル縮約部13は、基底構成部33において、多項式ベクトル生成部32で生成した、4個の6次元ベクトルv1,v2,v3,v4を線形関係導出部34に入力し、出力として複数の4次元ベクトルm1,m2,...を得る。線形関係導出部34は、掃き出し法を用いて、入力されたベクトルの線形関係を導出する。掃き出し法は既知の技術に属するので、以下、線形関係導出部34の動作はその概略のみ示す。
【0222】
線形関係導出部34は、まず、入力された4個の6次元ベクトルv1,v2,v3,v4を順に並べて4x6行列
【数35】
を構成する。
【0223】
次に、線形関係導出部34は、行列MRに4次元の単位行列を連結し、
【数36】
を構成する。
【0224】
次に、線形関係導出部34は、i行目の定数倍をi+1行目から4行目に加えることで(i=1,2)、行列M'Rを三角化し以下の行列mを得る。
【数37】
【0225】
よく知られているように行列mの3から4行目の第7成分以降よりなるベクトルは、入力された4個の6次元ベクトルv1,v2,v3,v4の全ての1次独立な線形従属関係Σi=1 4 mji vi = 0 (j=1,2,...,)を表すベクトル{(m1,1,m1,2,...,m1,4),(m2,1,m2,2,...,m2,4),...}である。
【0226】
線形関係導出部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レコードが得られる。
【0227】
さらに、第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の動作は終了する。
【0228】
最後に、図1のヤコビ群加算装置において、第二のイデアル縮約部13の出力したグレブナ基底J**= {835 + 27 X + X2, 697 + 348 X + Y }が出力装置より出力される。
【0229】
【発明の効果】
本発明を用いることにより、Cab曲線のヤコビ群における加算を高速に計算することができ、Cab曲線の実用性を向上させることができるという効果がある。
【図面の簡単な説明】
【図1】本発明の実施の形態を示すブロック図である。
【図2】イデアル合成部の機能ブロック図である。
【図3】イデアル縮約部の機能ブロック図である。
【図4】C34曲線に対する代数曲線パラメータファイルAの一具体例である。
【図5】C34曲線に対するイデアル型テーブルの一具体例である。
【図6】C34曲線に対する単項式リストテーブルの一具体例である。
【図7】C34曲線に対するグレブナ基底構成用テーブルの一具体例である。
【図8】C27曲線に対する代数曲線パラメータファイルの一具体例である。
【図9】C27曲線に対するイデアル型テーブルの一具体例である。
【図10】C27曲線に対する単項式リストテーブルの一具体例である。
【図11】C27曲線に対するグレブナ基底構成用テーブルの一具体例である。
【図12】C25曲線に対する代数曲線パラメータファイルの一具体例である。
【図13】C25曲線に対するイデアル型テーブルの一具体例である。
【図14】C25曲線に対する単項式リストテーブルの一具体例である。
【図15】C25曲線に対するグレブナ基底構成用テーブルの一具体例である。
【図16】本発明によるヤコビ群加算アルゴリズムの演算量を示す図表である。
【符号の説明】
10,20,30 代数曲線パラメータファイルA
11 イデアル合成部
12 第一のイデアル縮約部
13 第二のイデアル縮約部
21,31 イデアル型分類部
22 単項式ベクトル生成部
23,33 基底構成部
24,34 線形関係導出部
25,35 イデアル型テーブル
26,36 単項式リストテーブル
27,37 グレブナ基底構成用テーブル
Claims (2)
- 有限体上定義された、
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 ,v 2 ,...,v n に対して、掃き出し法を用いて、その全ての1次独立な線形従属関係Σ i m j,i v i = 0 (j=1,2,...) を表す複数のベクトル{m 1 =(m 1,1 ,m 1,2 ,...,m 1,n ),m 2 =(m 2,1 ,m 2,2 ,...,m 2,n ),...}を出力する線形関係導出手段と、
レコード番号フィールド、イデアル型番号フィールド、位数フィールドおよびイデアル型フィールドからなるイデアル型テーブルと、
レコード番号フィールド、位数フィールドおよび単項式リストフィールドからなる単項式リストテーブルと、
レコード番号フィールド、位数フィールド、成分番号リストフィールド、第一ベクトル型フィールド、第二ベクトル型フィールドおよび第三ベクトル型フィールドからなるグレブナ基底構成用テーブルと、
前記代数曲線パラメータファイルを取得し、入力されたグレブナ基底I 1 およびI 2 それぞれに対して、前記イデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルI i (i=1,2) の型と一致するレコードを検索し、検索されたレコードのイデアル型番号フィールドの値N i および位数フィールドの値d i を取得するイデアル型分類手段と、
前記位数フィールドの値d 1 およびd 2 の和d 3 =d 1 +d 2 を計算し、単項式リストテーブルを参照し前記d 3 を位数フィールドの値に持つレコードR を検索し、前記レコードR の単項式リストフィールドに記述されている単項式のリストM 1 ,M 2 ,...を取得し、I 1 とI 2 が異なるときには、前記各単項式M i をI 1 で割った剰余式r i を計算し、前記代数曲線パラメータファイルに記述された単項式順序に従って剰余式r i の係数からなるベクトルw (1) 1 を生成し、さらに、M i をI 2 で割った剰余式s i を計算し、代数曲線パラメータファイルA に記述された単項式順序に従って剰余式s i の係数からなるベクトルw (1) 2 を生成し、上記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 (M i ) D Y (F) - D Y (M i )D X (F) をI 1 で割った剰余式s i を計算し、前記代数曲線パラメータファイルに記述された単項式順序に従って剰余式s i の係数から成るベクトルw (1) 2 を生成し、上記2 つのベクトルw (1) 1 とw (1) 2 を連結してベクトルv i を生成する単項式ベクトル生成手段と、
前記複数のベクトルv 1 ,v 2 ,...を前記線形関係導出装置に入力し、出力として複数のベクトルm 1 ,m 2 ,...を得て、前記グレブナ基底構成用テーブルを参照し前記値d 3 を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0であるベクトルが前記複数のベクトルm 1 ,m 2 ,...中に存在しないレコードR 2 を検索し、前記複数のベクトルm 1 ,m 2 ,.. 中から、前記レコードR 2 の第一ベクトル型に一致するベクトルm を選択し、前記代数曲線パラメータファイルに記述された単項式順序に従ってベクトルm の成分の値を係数とする多項式f 1 を生成し、以下、同様にして、第二べクトル型に一致するベクトルを用いて多項式f 2 を、また第三ベクトル型に一致するベクトルを用いて多項式f 3 を生成し、多項式の集合J={f 1 ,f 2 ,f 3 } を得て、前記グレブナ基底J として出力する基底構成手段とを有することを特徴とするヤコビ群要素加算装置。 - 前記第一および第二のイデアル縮約手段の各々は、
入力された複数のベクトルv 1 ,v 2 ,...,v n に対して、掃き出し法を用いて、その全ての1 次独立な線形従属関係Σ i m j,i v i = 0 (j=1,2,...) を表す複数のベクトル{m 1 =(m 1,1 ,m 1,2 ,...,m 1,n ),m 2 =(m 2,1 ,m 2,2 ,...,m 2,n ),...}を出力する線形関係導出手段と、
レコード番号フィールド、イデアル型番号フィールド、縮約位数フィールド、およびイデアル型フィールドからなるイデアル型テーブルと、
レコード番号フィールド、位数フィールドおよび単項式リストフィールドからなる単項式リストテーブルと、
レコード番号フィールド、位数フィールド、成分番号リストフィールド、第一ベクトル型フィールド、第二ベクトル型フィールドおよび第三ベクトル型フィールドからなるグレブナ基底構成用テーブルと、
前記代数曲線パラメータファイルを取得し、前記イデアル型テーブルを参照し、イデアル型フィールドに記述されているイデアル型が入力イデアルJ の型と一致するレコードを検索し、検索されたレコードのイデアル型番号フィールドの値N および縮約位数フィールドの値d を取得するイデアル型分類手段と、
前記d が0であるときには、入力イデアルJ を前記グレブナ基底J * として出力し、前記d が0でないときには、前記単項式リストテーブルを参照し前記d を位数フィールドの値に持つレコードR を検索し、前記レコードR の単項式リストフィールドに記述されている単項式のリストM 1 ,M 2 ,...を取得し、前記代数曲線パラメータファイルに記述された係数リストおよび単項式順序を用いて定義多項式F を構成し、入力イデアルJ の第一番目の多項式f、第二番目の多項式gおよび第三番目の多項式hを取得し、前記各単項式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 を生成し、上記2つのベクトルw (1) 1 とw (1) 2 を連結してベクトルv i を生成する多項式ベクトル生成手段と、
前記複数のベクトルv 1 ,v 2 ,...を前記線形関係導出手段に入力し、出力として複数のベクトルm 1 ,m 2 ,...を得て、前記グレブナ基底構成用テーブルを参照して前記値d を位数フィールドの値にもち、かつ成分番号リストフィールドに記述されているすべての成分番号に対応する成分がすべて0 であるベクトルが前記複数のベクトルm 1 ,m 2 ,...中に存在しないレコードR 2 を検索し、前記複数のベクトルm 1 ,m 2 ,.. 中から、前記レコードR 2 の第一ベクトル型に一致するベクトルm を選択し、
ベクトルm の成分の値を係数とする多項式f 1 を前記代数曲線パラメータファイルに記述された単項式順序に従って生成し、以下、同様にして、第二べクトル型に一致するベクトルを用いて多項式f 2 を生成し、また第三ベクトル型に一致するベクトルを用いて多項式f 3 を生成し、多項式の集合{f 1 ,f 2 ,f 3 }を得て、前記グレブナ基底J * もしくはJ ** として出力する基底構成手段とを有することを特徴とする請求項1記載のヤコビ群要素加算装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002240034A JP4304937B2 (ja) | 2002-08-21 | 2002-08-21 | ヤコビ群要素加算装置 |
CA002437401A CA2437401C (en) | 2002-08-21 | 2003-08-14 | Jacobian group element adder |
US10/643,972 US7197528B2 (en) | 2002-08-21 | 2003-08-20 | Jacobian group element adder |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002240034A JP4304937B2 (ja) | 2002-08-21 | 2002-08-21 | ヤコビ群要素加算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004077948A JP2004077948A (ja) | 2004-03-11 |
JP4304937B2 true JP4304937B2 (ja) | 2009-07-29 |
Family
ID=31884506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002240034A Expired - Fee Related JP4304937B2 (ja) | 2002-08-21 | 2002-08-21 | ヤコビ群要素加算装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7197528B2 (ja) |
JP (1) | JP4304937B2 (ja) |
CA (1) | CA2437401C (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4752313B2 (ja) * | 2004-09-30 | 2011-08-17 | ソニー株式会社 | 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム |
JP2008203548A (ja) * | 2007-02-20 | 2008-09-04 | Oki Electric Ind Co Ltd | 二次双曲線群を使用する鍵生成方法、復号方法、署名検証方法、鍵ストリーム生成方法および装置。 |
US20090157788A1 (en) * | 2007-10-31 | 2009-06-18 | Research In Motion Limited | Modular squaring in binary field arithmetic |
JP5094882B2 (ja) * | 2008-01-18 | 2012-12-12 | 三菱電機株式会社 | 暗号パラメータ設定装置及び鍵生成装置及び暗号システム及びプログラム及び暗号パラメータ設定方法及び鍵生成方法 |
RU2010152794A (ru) * | 2010-12-24 | 2012-06-27 | ЭлЭсАй Корпорейшн (US) | Способ и устройство (варианты) для вычисления операции логарифма якоби |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3292107B2 (ja) * | 1997-08-28 | 2002-06-17 | 日本電気株式会社 | 2重ベクトル加算装置、2重ベクトル2倍装置及び2重ベクトル整数倍装置 |
JP2000206879A (ja) * | 1999-01-14 | 2000-07-28 | Internatl Business Mach Corp <Ibm> | 標数2のガロア体上で定義される超楕円曲線のヤコビ多様体の群演算を実施する装置及び方法 |
US6611597B1 (en) * | 1999-01-25 | 2003-08-26 | Matsushita Electric Industrial Co., Ltd. | Method and device for constructing elliptic curves |
JP3551853B2 (ja) * | 1999-08-27 | 2004-08-11 | 日本電気株式会社 | αYa+βXb+1=0という形の定義方程式をもつ代数曲線暗号における安全なパラメータの生成装置、生成方法、および記録媒体 |
US7020776B2 (en) * | 2000-06-22 | 2006-03-28 | Microsoft Corporation | Cryptosystem based on a Jacobian of a curve |
US7043015B2 (en) * | 2002-10-31 | 2006-05-09 | Microsoft Corporation | Methods for point compression for Jacobians of hyperelliptic curves |
-
2002
- 2002-08-21 JP JP2002240034A patent/JP4304937B2/ja not_active Expired - Fee Related
-
2003
- 2003-08-14 CA CA002437401A patent/CA2437401C/en not_active Expired - Fee Related
- 2003-08-20 US US10/643,972 patent/US7197528B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20040039768A1 (en) | 2004-02-26 |
JP2004077948A (ja) | 2004-03-11 |
CA2437401C (en) | 2009-07-21 |
CA2437401A1 (en) | 2004-02-21 |
US7197528B2 (en) | 2007-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Frangioni et al. | A bundle type dual-ascent approach to linear multicommodity min-cost flow problems | |
Krawitz et al. | Landau-Ginzburg/Calabi-Yau Correspondence of all Genera for Elliptic Orbifold $\mathbb {p}^ 1$ | |
Hoeltgen et al. | An optimal control approach to find sparse data for Laplace interpolation | |
Sariyüce et al. | Graph manipulations for fast centrality computation | |
JP6310345B2 (ja) | プライバシー保護装置、プライバシー保護方法及びデータベース作成方法 | |
CN116150553B (zh) | 一种面向cpu+dcu异构混合架构的稀疏化amg优化方法 | |
Krichever | Commuting difference operators and the combinatorial Gale transform | |
Koroteev et al. | Toroidal q-opers | |
JP4304937B2 (ja) | ヤコビ群要素加算装置 | |
Herranz et al. | Casimir invariants for the complete family of quasisimple orthogonal algebras | |
Mastorakis | Numerical solution of non-linear ordinary differential equations via collocation method(finite elements) and genetic algorithms. | |
Casati | On deformations of multidimensional Poisson brackets of hydrodynamic type | |
Bostan et al. | Algebraic diagonals and walks: algorithms, bounds, complexity | |
Iglesias et al. | Liftings of Nichols algebras of diagonal type III. Cartan type G2 | |
Charina et al. | Limits of level and parameter dependent subdivision schemes: a matrix approach | |
Berthé et al. | Rational approximations, multidimensional continued fractions and lattice reduction | |
Horacsek et al. | A closed PP form of box splines via Green’s function decomposition | |
JP3030341B1 (ja) | ランダムなベクトル列の出力装置、出力方法、および、情報記録媒体 | |
Liashyk et al. | Gauss coordinates vs currents for the Yangian doubles of the classical types | |
Huang et al. | Degree-M Bethe and Sinkhorn Permanent Based Bounds on the Permanent of a Non-negative Matrix | |
Stankovic | Some remarks on terminology in spectral techniques for logic design: Walsh transform and Hadamard matrices | |
Kuppili et al. | Exact upper bound for sorting R n with LE | |
Grabowski et al. | Deformed cluster maps of type $ A_ {2N} $ | |
Yen et al. | Unified multiple constant multipliers for dynamic exchange of low-precision kernels on FPGAs | |
Adamaszek | Hard squares on cylinders revisited |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050615 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090120 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090309 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090407 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090420 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4304937 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120515 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120515 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130515 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140515 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |