ISSN 1349-127X (Online)
ISSB 1349-1261 (Paper)
http://www.math.kobe-u.ac.jp/raj

Risa/Asir Journal
Volume 4 (2012)

Editors

Nobuki Takayama (Managing editor)
Toshinori Oaku (Advisory editor)

Risa/Asir Journal will be a step to “Journal of Free Mathematical Software”.
We welcome not only articles related to Computer algebra system Risa/Asir,but also any articles on free mathematical software.
Please visit http://www.math.kobe-u.ac.jp/raj. All articles and attachedsoftware systems will be reviewed.

平面曲線に対する twisted logarithmic

cohomology 群の計算アルゴリズムとその超幾何積分への応用
西谷圭祐, 神戸大学理学研究科
平成 24 年 2 月 29 日

1

はじめに
R = C[x1 , · · · , xn ] を n 変数多項式環とする.
(Ω•R , d) を R 係数（または正則）微分形式のなす複体とする. ただし d は外微分を表す. 0 でない多項式 f ∈ R に対し, Rf で R を f で局所化した環を表す. すなわち

Rf = {g| g ∈ R, m ∈ N}.
fm(Ω•f , d) := (Rf ⊗ Ω•R , d) を Rf 係数の有理微分形式のなす複体とする.
f を定数でない無平方多項式とする. 齋藤 [25] に従い, 有理 p 次微分形式
ω ∈ Ωpf が条件 f ω ∈ ΩpR , df ∧ω ∈ Ωp+1
を満たすとき, 対数 p 次微分形式といRい, 対数 p 次微分形式全体のなす R-加群を ΩpR (logf ) (または単に Ωp (logf ))と表す. f の既約分解を f = f1 · · · fs とし, α1 , · · · , αs ∈ C をパラメータす!s"siる. Φ = i=1 fiαi とおく. このとき, ∇ := d + dlogΦ∧ = d + i=1 αi df
fi ∧
に対して

∇

∇

∇

0 −→ Ω0 (logf ) −→ Ω1 (logf ) −→ · · · −→ Ωn (logf ) −→ 0
は複体をなす (d の場合の証明は [25, 1.3] で与えられた. ∇ の場合の証明は[2, p 70] を参照). この複体から定まるコホモロジー群を twisted logarithmic
cohomology 群といい, H • (Ω• (logf ), ∇) と書く.
Castro, 高山 [8] は平面曲線に対する logarithmic cohomology 群を計算す
るアルゴリズムを与えた. 彼らのアルゴリズムでは logarithmic cohomology
群の基底を求めるために Der(logf ) の自由基底を計算する必要があり, そのために多項式環上の射影加群の自由基底を求める Quillen-Suslin アルゴリズ
ム [13] を用いていた. 本論文では, twisted logarithmic cohomology 群を計算する新しいアルゴリズムを与える. 我々のアルゴリズムには Quillen-Suslin
アルゴリズムを必要としないため, Castro-高山アルゴリズムより高速なアル1

ゴリズムとなっている. 我々のアルゴリズムでは左 D-加群の自由分解の間の鎖準同型の構成アルゴリズムを利用している. アルゴリズムは数式処理シス
テム Macaulay2 [30] 上で実装した.
さらに, 本論文では twisted logarithmic cohomology 群の計算アルゴリズ
ムの応用として, 多項式ベキの積分から定まるあるクラスの超幾何積分の満たす差分方程式系を求めるアルゴリズムと, 指数関数と多項式ベキの積分から定まるあるクラスの超幾何積分の満たす微分方程式系を求めるアルゴリズ
ムを与える. 超幾何積分が満たす微分方程式, 差分方程式を求めるアルゴリズ
ムには, 代表的なものとして Zeilberger アルゴリズム [1, 27, 28], Chyzak ア
ルゴリズム [5, 6, 7], 積分アルゴリズム [16, 18, 20, 22] がある. Zeilberger ア
ルゴリズムは creative-telescoping の方法を用いて, hyperexponential と呼ばれるクラスの関数の積分が満たす微分方程式系, 差分方程式系を計算するアルゴリズムである. Chyzak アルゴリズムは, Ore 代数上の Gröbner 基底と未定係数法により, ホロノミックな関数の積分が満たす微分方程式系, 差分方
程式系を計算するアルゴリズムである. D-加群の積分アルゴリズムは大阿久[18] によって与えられた. これの応用として, 微分作用素環における Gröbner
基底を用いて, ホロノミックな関数の満たす微分方程式系 (または微差分方程式系) から積分の満たす微分方程式系 (または差分方程式系) を得ることができる. 上記のアルゴリズムに対して, 今回新たに得られたアルゴリズムではtwisted logarithmic cohomology 群の基底を用いてあるクラスの超幾何積分の満たす微分方程式, 差分方程式を計算する. このアルゴリズムは積分アルゴ
リズムに基づいているが, 積分すべき D の左イデアルが, 本来の積分アルゴ
リズムの方法とは異なるものとなっている. アルゴリズムの実装は数式処理システム Risa/Asir [35] 上で行った. 我々は, 我々が実装したアルゴリズムとMaple に実装されている Chyzak アルゴリズム [29] との計算時間の比較を行った. その結果, 我々のアルゴリズムの方が速く計算できる場合があることが分かった.

2自由分解の間の鎖準同型の構成アルゴリズム

2.1

Ore 代数の定義

まず Ore 代数の定義を復習しておく. Ore 代数は Ore [24] で導入された.

Ore 代数は微分作用素環や差分作用素環を一般化したものである.
定義 2.1. (Ore 代数 [7])1. R を整域とする. 非可換環 R[∂; σ, δ] が以下の条件を満たすとき, skew
polynomial ring という:i. ∂a = σ(a)∂ + δ(a), a ∈ R,
2

ii. σ, δ はそれぞれ R の自己準同型, σ-derivation である.
2. R = K[x1 , · · · , xn ] を標数 0 の体 K 上の多項式環とする. skew polynomial ring O = R[∂1 ; σ1 , δ1 ]...[∂m ; σm , δm ] が次の条件を満たすとき, O を
Ore 代数という: σi , δi (1 ≤ i, j ≤ m) は可換であり, 交換関係
σi (∂j ) = ∂j , δi (∂j ) = 0, j < iが成り立つ.
例 2.2. D = Dn = K(x1 , · · · , xn , ∂x1 , · · · , ∂xn ) n 変数微分作用素環とする.
すなわち, Dn は x1 , · · · , xn と ∂x1 , · · · , ∂xn で生成される K 代数であり, 次の交換関係を満たす:

xi xj = xj xi , ∂xi ∂xj = ∂xj ∂xi , ∂xi xj = xj ∂xi + δij (i, j = i, · · · , n).
∂i = ∂xi , σi = 1, δi = ∂i とすると, 微分作用素環は Ore 代数となる.
例 2.3. Es = K(α1 , · · · , αs )(Eα1 , · · · , Eαs ) を s 変数差分作用素環とする.
すなわち次の交換関係を満たす:

Eαi Eαj = Eαj Eαi , Eαi p(α) = p(α + ei )Eαi (p(α) ∈ K(α1 , · · · , αs )).
ただし, i, j = 1, · · · , s. ∂i = Eαi , σi = Eαi , δi = 0 とすると, 差分作用素環
は Ore 代数となる.

Ore 代数の左イデアルに対して, Gröbner 基底, Buchberger アルゴリズム,
シヂジー計算が一般化されている [7].

2.2O-加群の自由分解の間の鎖準同型の構成アルゴリズム

次のアルゴリズムは, 多項式環の場合にはよく知られており, Macaulay2 ではコマンド incudedMap に実装されている. このアルゴリズムは多項式環でのアルゴリズムを O-加群の場合にそのまま一般化したものである.
定理 2.4. M, N を有限生成左 O-加群とする. M • , N • を M, N の自由分解,

ϕ : M → N を O-加群の準同型とする. このとき, ϕ を誘導する鎖準同型ϕ• : M • → N • を求めるアルゴリズムが存在する. すなわち, 下の図式を可換にする ϕ• を構成することができる.
M• :

···

! Om2

f2

! Om1

ϕ2

···

! On2

! Om0

ϕ1

"
N• :

f1

g1

3

! O n0

0

!

0

ϕ

"

! On1

!

! M

ϕ0

"
g2

f0

"
g0

! N

Proof. f1 , g1 を定める m1 × m0 行列, k1 × k0 行列をそれぞれ P = [pij ], Q =[qij ] とする.
まず, ϕ0 を求める. ϕ を定める行列を Φ = [ϕij ] とすると, ϕ0 は ϕij の代表元を成分とする m0 × k0 行列 Φ0 = [ϕij ] で与えられる. 次に, ϕ1 を求める. 図式の可換性より, ϕ1 は非斉次連立 1 次方程式 P Φ0 = Φ1 Q を満たす m1 × k1 行列 Φ1 で与えられる. [14, IV Theorem 4.1] により, この方程
式には Φ0 の定め方によらず解が存在する. この非斉次連立 1 次方程式の解

は, Gröbner 基底を用いることで求めることができる. 多項式環の場合の方法は [11, p 214, Proposition 2.7] で述べられている. この方法は O-加群の場
合にそのまま一般化できる. この操作を繰り返すことにより, ϕ• が構成でき
る.
鎖準同型の構成例については例 3.7 を参照.

平面曲線に対する twisted logarithmic cohomol-

3

ogy 群の計算アルゴリズム

この章では n = 2 の場合を考える. 2 変数の場合に限定する理由を, この章の概略とともに述べておく. 2 変数の場合には, Der(−logf ) の自由基底の存在が保証されている. この事実から twisted logarithmic cohomology 群 がある D-加群の積分と同型となることが示される (系 3.3). さらにこの同型を定理 2.4 を用いて構成することで, twisted logarithmic cohomology 群 の基底を計算する (ただし, 0 次のコホモロジー群は別の方法で求める). これがtwisted logarithmic cohomology 群 を計算するアルゴリズムの概略である.
以下では, D = D2 , x = x1 , y = x2 , ∂x = ∂1 , ∂y = ∂2 とする. g ∈ R に対し

∂g ∂g
て ∂x
, ∂y をそれぞれ gx , gy で表すと約束する. ⊗ は D 上でのテンソル積を表すとする.

3.1(Ω• (logf ), ∇) の自由基底による表示

n = 2 のとき, 有限生成 reflexive R-加群は射影的加群となるから, QuillenSuslin の定理 [11, p 197, Theorem 1.8] によりそれは自由加群となる. ゆえにDer(−logf ) (および Ω1 (logf )) はランク 2 の自由 R-加群となる. Der(−logf )の基底 {δ1 , δ2 } を
δi = ai1 ∂x + ai2 ∂y

i = 1, 2とすると, 齋藤の判定法 [25, 1.8] より, det((aij )) = f が成り立つ. よって,

{δ1 , δ2 } の双対基底を ω1 , ω2 とすると
ω1 =

1
1
(a22 dx − a21 dy), ω2 = (−a12 dx + a11 dy)ff
4

となる. このとき, Ω2 (logf ) は ω1 ∧ ω2 = dx∧dyを基底とするランク 1 の自f
由 R-加群となる.

[25, 1.5] より, Der(logf ) は交換子積 [·, ·] に関して閉じている. [δ1 , δ2 ] を

δ1 , δ2 の R-線型結合で表したときの係数を b1 , b2 とする.

命題 3.1. 対数微分形式のなす複体 (Ω• (logf ), ∇) は次の複体と同型となる.
∇Ω0 (logf )η0! Ω1 (logf )
η1

"
$1

R

! Ω2 (logf )
η2

"
$2

R2
!

∇

!

"

R

ここで, 下の複体の境界写像は'1 (g) = (δ1 (g) +

s
#

αi

i=1

s
#
δ1 (fi )δ2 (fi )g, δ2 (g) +
αi
g)
fi
fi
i=1
s
#

s
#
δ2 (fi )δ1 (fi )'2 (h1 , h2 ) = δ1 (h2 ) − δ2 (h1 ) − b1 h1 − b2 h2 −
αi
h1 −
αi
h2
f
fi
i
i=1
i=1

である. また, 複体の間の同型を与える鎖準同型は η0 = id, η1 (h1 ω1 +h2 ω2 ) =(h1 , h2 ), η2 (gω1 ∧ ω2 ) = g (g, h1 , h2 ∈ R) で与えられる.

この命題はより一般のある条件を満たす複体 Ω• (logf, d) で示されている

定理 [4, Theorem 3.2.1] および系 [4, Corollary 3.2.2] の 2 変数, twisted 版
である.

Proof. Der(−logf ) ⊂ Der(−logfi ) (i = 1, · · · , s) が成り立つことに注意を払
えば, 後は [8, Remark 2.1] で d を ∇ に置き換えた議論によって主張が従う.

上の命題に現れた複体
$

$

(1)

$¯

$¯

(2)

1
2
0 → R −→
R2 −→R→0

は右 D-加群の複体
120 → D −→
D2 −→D→0に関手 − ⊗ D/(D∂x + D∂y ) を施したものである. ただし, P, Q1 , Q2 ∈ D に対して境界写像は'¯1 (P ) = (δ1 P +

s
#
i=1

αi

s
#
δ1 (fi )δ2 (fi )P, δ2 P +
αi
P)
fi
fi
i=1

'¯2 (Q1 , Q2 ) = δ1 Q2 − δ2 Q1 − b1 Q1 − b2 Q2 −と定める. I logf := {−δ2 − b1 −とおくと, 次の命題が成り立つ.

"s

s
#
i=1

αi

s
#
δ2 (fi )δ1 (fi )
Q1 −
αi
Q2
fi
fi
i=1

"s
δ2 (fi )δ1 (fi )i=1 αi fi , δ1 − b2 −i=1 αi fi } · D
5

命題 3.2. I logf はホロノミック右イデアルである.

Proof. I logf の特性イデアル in(0,1) (I logf ) には in(0,1) (δ1 ), in(0,1) (δ2 ) なる元が含まれる. これらが生成する C[x, y, ξx , ξy ] のイデアルを J とすると,
dim(in(0,1) (I logf )) ≤ dim(J) が成り立つ. よって, dim(J) ≤ 2 であることを示せばよい. まず, δ1 , δ2 が Der(−logf ) の自由基底であることから,
in(0,1) (δ1 ), in(0,1) (δ2 ) は C[x, y, ξx , ξy ]-正則列となる. 実際, 正則列でないと仮定すると [4, Corollary 4.2.2] と同様の議論により, 齋藤の判定法に矛盾することになる. このとき, 可換環論でよく知られているように, height(J) = 2が成り立つ (例えば [15, p 159] を参照). さらに, 可換環論における一般論より height(J) + dim(J) ≤ dimC[x, y, ξx , ξy ] = 4 が成り立つから, dim(J) ≤ 2となる. 従って, 主張が示された.

M logf := D/I logf とおいて (2) の右端に M logf を加えた列を考える. この列の (0, 0, 1, 1)-フィルターから定まる次数加群の列を考えると, それは正則列から定まる Koszul 複体となっている. したがって Koszul 複体のコホモ
ロジー消滅定理 (例えば [15, 定理 16.5] を参照) と [3, p 46, Lemma 3.13] から (2) はホロノミック右 D-加群 M logf の自由分解であることが分かる. 以上のことから次の系を得る.
系 3.3. Twisted logarithmic cohomology 群 はホロノミック右 D-加群 M logfの積分と同型である. すなわちH • (Ω• (logf ), ∇) , H • ((M logf )• ⊗ D/(D∂x + D∂y ))この系が twisted logarithmic cohomology 群の基底を計算するアルゴリズ
ムの基礎を与える.

3.2

H 1 , H 2 の計算

まず H 2 (Ω• (logf ), ∇) を計算するアルゴリズムを与える. 以下の議論は, [8,Algorithm 5.1] において d から定まる微分作用素 Li たちを, ∇ から定まるものに置き換えたものである. 対数微分形式の定義から Ω2 (logf ) = C[x, y] dx∧dyfである. さらに Ω1 (logf ) は C[x, y]-加群としてシヂジー加群 Syz(fy , −fx , f )と同型である. 実際, シヂジー (p, q, r) は対数 1-形式 ω = pdx+qdy
を定め
f
る. Gröbner 基底を用いることで, Syz(fy , −fx , f ) の生成元を求めることができる. その生成元を (p1 , q1 , r1 ), · · · , (pm , qm , rm ) とする. 一方, 任意のg ∈ C[x, y] と任意の ω = pdx+qdy∈ Ω1 (logf ) に対して ∇(gω) = (L•g) dx∧dyffとなる. ここで, L は
L = q∂x − p∂y + qx − py − r +
6

m
#
αj
j=1

fj

(q(fj )x − p(fj )y )なる微分作用素を表す. fi は f の既約因子であるから, 簡単な計算より (p, q, r)

はシヂジー加群 Syz((fi )y , −(fi )x , fi ) の元であることがわかる. これより L は多項式係数の微分作用素となる. 従って, (p1 , q1 , r1 ), · · · , (pm , qm , rm ) に対応"mする微分作用素を L1 , · · · , Lm とすると ∇Ω1 (logf ) = i=1 Li • C[x, y] dx∧dyfとなる. したがって,

H 2 (Ω• (logf ), ∇) = C[x, y]/

m
#
i=1

Li • C[x, y], D/({L1 · · · Lm } · D +

2
#

D∂i )

i=1

, (D/{L1 · · · Lm } · D) ⊗ (D/

2
#

D∂i )

i=1

が成り立つ. 命題 3.2 より {L1 · · · Lm }·D はホロノミックである. H 2 (Ω• (logf ), ∇)は右 D/{L1 · · · Lm } · D の 0 次の積分と同型であるから, 右辺の基底は積分

アルゴリズム [18] によって求まる. それを {ci } とすると, {ci dx∧dy} がf

H 2 (Ω• (logf ), ∇) の基底となる. また M logf = D/{L1 · · · Lm } · D であることに注意する.
次に H 1 (Ω• (logf ), ∇) の基底を求めるアルゴリズムを与える. M • を M logfの自由分解, N • を M logf の (1, 1, −1, −1)-adapted free resolution ([21, 22]を参照) とする. 定理 2.2 より, M • と N • の間には id : M logf → M logf を誘導する鎖準同型 ϕ• : M • → N • , ψ • : N • → M • を Gröbner 基底で構成で
きる.

M• :

···

ϕ2

ψ2

"
N• :

···

! Dm1[L1 ,··· ,Lm! ]· D
#
#

! Dm2
#

! D k2

ψ1

ϕ1

"

id

!

0

!

0

! M logf#
id"! Dk1 ['1 ,··· ,'k ]·! D

id

id

"
! M logf

ここで, m1 = m, k1 = k であり, {+1 , · · · , +k } は {L1 , · · · , Lm } の (1, 1, −1, −1)-Gröbner 基底である. また, ϕ1 , ψ 1 はそれぞれ以下で定まる変換行列 P, Q である.

[L1 , · · · , Lm ] = [+1 , · · · , +k ]P[+1 , · · · , +k ] = [L1 , · · · , Lm ]Q

変換行列 P は, 割り算アルゴリズムを用いて L1 , · · · , Lm を Gröbner 基底+1 , · · · , +k の標準表示として表したときの商から求まる. また変換行列 Q は,
L1 , · · · , Lm から +1 , · · · , +k を求めるときの S 多項式を記憶しておくことで求まる. このとき, ホモロジー代数の一般的な議論から ψ • ◦ ϕ• は idM • に,ϕ• ◦ ψ • は idN • にそれぞれホモトピー同値であることがわかる (例えば, [14,7

IV, Theorem 4.1] を参照). すなわち,ψ • ◦ ϕ• , idM • , ϕ• ◦ ψ • , idN • .
"2"2
従って, 写像のテンソル積 ϕ• ⊗id : M • ⊗(D/ i=1 D∂i ) → N • ⊗(D/ i=1 D∂i ), ψ • ⊗"2"2
id : N • ⊗ (D/ i=1 D∂i ) → M • ⊗ (D/ i=1 D∂i ) に対して
(ψ • ⊗ id) ◦ (ϕ• ⊗ id) , idM • ⊗ id, (ϕ• ⊗ id) ◦ (ψ • ⊗ id) , idN • ⊗ idが成り立つ. ゆえに(ψ • ⊗ id)∗ : H • (N • ⊗ (D/

2
#
i=1

D∂i )) → H • (M • ⊗ (D/2#D∂i ))

i=1

はコホモロジー群の同型を与える. 特に 1 次のコホモロジー群の間の同型と"2して, 行列 Q は C-ベクトル空間の間の同型 Q : H 1 (N • ⊗ (D/ i=1 D∂i )) →""22
H 1 (M • ⊗ (D/ i=1 D∂i )) を誘導する. ところで, H • (N • ⊗ (D/ i=1 D∂i ))の基底は積分アルゴリズム [22] によって求めることができる. ゆえに対応.−→

によって, H (N ⊗ (D/1•

すことができる.

3.3

"2


Q•


a1





b1



m
#
pi dx + qi dy
.−→
bi
f
i=1

  
= 
  
ak
bm

i=1 D∂i )) の基底を H

1H 1 (Ω• (logf ))
∈

∈



···

···

 (1) 
a
 1 




(1)
ak

"2
Q
1
•
i=1 D∂i ))−→H (M ⊗ (D/i=1 D∂i ))−→
···

"2

∈

H 1 (N • ⊗ (D/(3)(Ω (logf ), ∇) の基底に移•H 0 の計算

最後に H 0 (Ω• (logf ), ∇) の基底を求めるアルゴリズムを述べる. Ω1 (logf )"2の生成元として自由基底を用いていないため, H 0 (M • ⊗ (D/ i=1 D∂i )) とH 0 (Ω• (logf ), ∇) の間の同型を構成することは難しい. そこで, ここでは
H 0 (Ω• (logf ), ∇) の基底の計算を微分方程式の多項式解を求めることに帰着させる. 対数微分形式の定義から Ω0 (logf ) = C[x, y] である. H 0 (Ω• (logf ), ∇) =Ker(∇ : Ω0 (logf ) → Ω1 (logf )) であるから, g ∈ H 0 (Ω• (logf ), ∇) をとると
s#∇(g) = ((∂x ) • g +

αi

i=1

s
#
(fi )x(fi )yg)dx + ((∂y ) • g +αig)dy = 0fi
fii=1となる. ゆえに, H (Ω (logf ), ∇) は連立微分方程式0f (∂x ) • g +の解空間である.

•

s
#
i=1

αi f

s
#
(fi )x(fi )yg = 0, f (∂y ) • g +
αi f
g=0
fi
fi
i=1

8

(4)

命題 3.4. 微分方程式系 (4) はホロノミックであり, ホロノミックランクは
高々 1 である.

Proof. p1 := f ∂x +"i αi f"(fi )y(fi )xi αi f fi
fi , p2 := f ∂y +によって生成される D の左イデアルを I とおく.

####(fi )y(fi )x(fi )x(fi )y∂y p1 −∂x p2 = {fy −αi f}∂x −{fx −αi f}∂y +(
αi f
)y −(
αi f
)x
f
f
f
f
i
i
i
i
"
"
(f )
(f )
であるから, in(0,1) (I) には f ξx , f ξy , {fy − i αi f fi y }ξx −{fx − i αi f fi x }ξy"(f )なる元が属する. ゆえに I の特性多様体は V (f ξx , f ξy , {fy − i αi f fi y }ξx −"{fx − i αi f (ffi )x }ξy ) なる代数多様体に含まれる. [8, Theorem 5.2] と同様の議論で, この代数多様体の次元は 2 以下であることが分かる. 従って, I は
ホロノミックである. (4) の形から I のホロノミックランクが高々 1 である
ことは明らかである.
この命題から dimH 0 (Ω• (logf ), ∇) ≤ 1 が従う. H 0 (Ω• (logf ), ∇) の次元"2
は H 0 ((M logf )• ⊗ D/( i=1 D∂i )) の次元と等しいから, 先の積分アルゴリ

ズムによって次元は求められる. さらに, この微分方程式の多項式解を求める
方法はいろいろあるが, 例えば [23, Algorithm 2.4] によって求めることがで
きる.

3.4

アルゴリズムとその実装

前節までの内容をまとめることにより, 2 次元の場合の twisted logarithmic

cohomology 群を計算するアルゴリズムを得る.
アルゴリズム 3.5.

入力 : 0 でない既約多項式 f1 , · · · , fs ∈ C[x, y], パラメータ α1 , · · · , αs ∈ Q
出力 : H i (Ω• (logf ), ∇) の次元と基底

1. C[x, y] 上の Gröbner 基底を用いて Syz(fy , −fx , f ) の生成元を計算する.
それを (p1 , q1 , r1 ), · · · , (pm , qm , rm ) とする.

Li = qi ∂x − pi ∂y + (qi )x − (pi )y − ri +

s
#
αj
j=1

fj

(qi (fj )x − pi (fj )y ) (5)によって微分作用素 L1 , · · · , Lm を定める.

2. 右イデアル {L1 , · · · , Lm } · D の (1, 1, −1, −1)-Gröbner 基底を計算する.

それを +i , · · · , +k とする. Gröbner 基底の計算過程において S-ペアを記

憶しておくことで, [+1 , · · · , +k ] = [L1 , · · · , Lm ]Q なる変換行列 Q も計算する.

93. 右 D-加群 M = D/{+1 , · · · , +k } · D に積分アルゴリズムを適用して"2
H i (M • ⊗ D/ i=1 D∂i ) (i = 0, 1, 2) の基底を計算する.
4. H 2 (M • ⊗D/"2

i=1 D∂i ) の基底を {ci } としたとき, {ciの基底として出力する.

dx∧dy} を H 2 (Ω• (logf ), ∇)f"2
5. H 1 (M • ⊗D/ i=1 D∂i ) の基底を計算し, 対応 (3) で移したものを H 1 (Ω• (logf ), ∇)の基底として出力する.
"2
6. dimH 0 (M • ⊗ D/ i=1 D∂i ) = 1 ならば, [23, Algorithm 2.4] によって
(4) の多項式解を求める. その解を H 0 (Ω• (logf ), ∇) の基底として出力"2する. H 0 (M • ⊗ D/ i=1 D∂i ) = 0 ならば H 0 (Ω• (logf ), ∇) = 0 である.

定理 3.6. アルゴリズム 5.1 のステップ 2 において右 D-加群 M に対する積
分アルゴリズムは停止する.

Proof. 命題 3.2 より I logf がホロノミックであることから主張が従う.
アルゴリズム 3.5 の実装は数式処理システム Macaulay2 で行った. プログ
ラムはパッケージ twistedLogcohomology.m2 [33] に収められている. なお

Macaulay2 では右 D-加群が扱えないため, アルゴリズムのステップ 1 で求めた微分作用素 L1 , · · · , Lm の共役作用素をとり, 左 D-加群として計算をさせている. 積分加群の基底は, Macaulay2 の D-module パッケージ [31] 内にある DintegrationAll コマンドで求めている. また微分方程式 (4) の多項式解は polysols コマンドで求めている.
例 3.7. s = 2, f1 = x, f2 = x + y, α1 = −1, α2 = 0 の場合. f = x(x + y) に対して Ω1 (logf ) の生成元は ω1 =(x+y)dx, ω2 = −ydx+xdyとなる. この生成ff元から定まる微分作用素はそれぞれ

L1 = −(x + y)∂y , L2 = x∂x + y∂y − 1となる. このとき M logf の自由分解 M • と M logf の adapted (1, 1, −1, −1)-resolution N • , および M • と N • の間の同型を定める鎖準同型 ϕ• は以下のようになる:
M• :

0

f2

! D
#
ψ2

ϕ2

ψ1

"
N• :

0

! D2

! D2
#

g

2

f1

ϕ1

id

"
! D3

10

g

1

id

"
! D

!

0

!

0

! M logf
#

! D
#

id

id

"
! M logf

ただし,

,
+
−x∂x − y∂y + 1
2
f = −(x + y)∂y x∂x + y∂y − 1 , f =,−(x + y)∂y

∂x
*
+

g 1 = (x + y)∂y x∂x + y∂y − 1 −y∂x ∂y + y∂y2 − ∂y , g 2 = −∂y
1

*

1



,
,
−1 0
x+y
−1 0


1
2
1
ϕ =  0 −1 , ϕ =
, ψ =
1
0 −1
0
0
であり, 変換行列 Q は

,

−1 0
Q=
0 1

∂x
∂y


−y∂x + y∂y − 2

1
,

*
+
∂x
, ψ2 = 0 1∂y−(x + y)-となる. M = D/{+1 , +2 , +3 } · D に積分アルゴリズムを適用して H • (M • ⊗"2"2
D/ i=1 D∂i ) の基底を計算する. H 2 (M • ⊗D/ i=1 D∂i ) の基底は {y} とな"2
2•り, {y dxdy
. また H 1 (M • ⊗D/ i=1 D∂i )f .} が H (Ω (logf ), ∇) の基底となる
*
+T *
+T /
の基底は 0 −y 0 , −2x 0 0となる. よって, H 1 (Ω• (logf ), ∇).
/"2y(ydx − xdy) 2x(x + y)dxの基底は,となる. さらに dimH 0 (M • ⊗D/ i=1 D∂i ) =f
f
1 となり, (4) の多項式解を求めると x となる. ゆえに, H 0 (Ω• (logf ), ∇) の
基底は {x} となる.

Macaulay2 で twisted logarithmic cohomology 群の基底を求めるコマンド
は twistedLogCohomology2 である. Twisted logarithmic cohomology の基底の計算に必要なのは変換行列のみであり, その計算は twistedLogCohomology2の内部で行っている. そのため, D の場合の鎖準同型を構成するアルゴリズ
ムの実装は行っていない.
Macaulay 2, version 1.1.99
i1 : loadPackage "Dmodules"o1 = Dmodules
o1 : Package
i2 : load "twistedLogCohomology2.m2"
i3 : R = QQ[x,y];i4 : twistedLogCohomology2({x,x+y},{-1,0})Warning: not a generic weight vector. Could be difficult...
o4 = HashTable{BFunction => (s - 1)

}
1

11

CohomologyGroups => HashTable{0 => QQ }2
1 => QQ
12 => QQ
LogBasis => HashTable{0 => | x |}1 => | y2dx-xydy 2x2dx+2xydx |2 => | ydxdy |1
2
OmegaRes => (QQ[x, y, dx, dy]) <-- (QQ[x, y, dx, dy])1<-- (QQ[x, y, dx, dy])01PreCycles => HashTable{0 => | -x2-xy |}| -x|
1 => | 0 -2x || -y 0|| 0 0|
2 => | y |1
3
VResolution => (QQ[x, y, dx, dy]) <-- (QQ[x, y, dx, dy])
0

1

2

3

2
<-- (QQ[x, y, dx, dy])

<-- 0

2

o4 : HashTable

Twisted logarithmic cohomology の基底はハッシュテーブル LogBasis で求められている. ただし, H 1 , H 2 の基底は分子のみ出力される.
例 3.8. s = 1, f = f1 = (x3 + y 4 + xy 3 )(x2 + y 2 ), α = α1 = 0 の場合. この例

は Castro-高山アルゴリズムにおいて, Quillen-Suslin アルゴリズムを用いなければ logarithmic cohomology 群が求められなかった例である ([8, Example

1.2.(b), Example 4.1.] を参照). (1) H 0 (Ω• (logf ), ∇) , C · 1 である. (2)H 1 (Ω• (logf ), ∇) は次の 3 個の元で張られる.

1(10x2 y 3 dx+21xy 4 dx+y 5 dx−15x3 y 2 dy −26x2 y 3 dy −6xy 4 dy −f
5y 5 dy + 6x3 ydx − 15x2 y 2 dx − 6x4 dy + 15x3 ydy)

• ω1 =

1(143x2 y 3 dx + 303xy 4 dx − 10y 5 dx − 255x3 y 2 dy − 415x2 y 3 dy −f102xy 4 dy − 112y 5 dy + 75x3 ydx − 255x2 y 2 dx − 75x4 dy + 228x3 ydy −• ω2 =

27x4 dx)1(50x2 y 3 dx + 78xy 4 dx − 22y 5 dx − 75x3 y 2 dy − 103x2 y 3 dy −f
3xy 4 dy − 25y 5 dy + 3x3 ydx − 75x2 y 2 dx − 3x4 dy + 75x3 ydy)

• ω3 =(3) H 2 (Ω• (logf ), ∇) は次の 7 個の元で生成される.
dx ∧ dydx ∧ dy 2 dx ∧ dy 2 2 dx ∧ dydx ∧ dy 3 dx ∧ dy 4 dx ∧ dy
, −x
,y
,x y
, xy 2
,x y
,y
f
f
f
f
f
f
f
12

<-- 0

3

パッケージ twistedLogCohomology2.m2 のコマンド twistedLogCohomology2
を 20G メモリの Intel Xeon(R) (2.33GHz) で実行したときの実行時間は, 0.46
秒であった.
i5 : time twistedLogCohomology2({x^3+y^4+x*y^3,x^2+y^2},{0,0})Warning: not a generic weight vector. Could be difficult...
-- used 0.460028 seconds
1110
o5 = HashTable{BFunction => (s)(s - 4)(s - 2)(s - 1)(s - --)(s - --)3
3
1
CohomologyGroups => HashTable{0 => QQ }3
1 => QQ
72 => QQ
LogBasis => HashTable{0 => |1|
1 => | -177120x2y3dx-371952xy4dx-17712y5dx+265680x3y2dy+460
512x2y3dy+106272xy4dy+88560y5dy-106272x3ydx+265680x2y2dx+106272x4dy-265680x3ydy/* \omega_1 を -17712 倍した元 */926640x2y3dx+1963440xy4dx-64800y5dx-1652400x3y2dy-2689200x2y3dy-660960xy4dy-725760
y5dy-174960x4dx+486000x3ydx-1652400x2y2dx-486000x4dy+1477440x3ydy/* \omega_2 を 6480 倍した元 */324000x2y3dx+505440xy4dx-142560y5dx-486000x3y2dy-667440x2y3dy-19440xy4dy-162000y5d
y+19440x3ydx-486000x2y2dx-19440x4dy+486000x3ydy/* \omega_3 を 6480 倍した元 */|2 => | dxdy -xdxdy y2dxdy x2y2dxdy xy2dxdy x3ydxdy y4dxdy |VResolution => (QQ[x, y, dx, dy])<-- (QQ[x, y, dx, dy])0<-- (QQ[x, y, dx, dy])1<-- (QQ[x, y, dx, dy])2

3o5 : HashTable

例 3.9. 下の表は f = xp +y q +xy q に対する Twisted logarithmic cohomology

群をパラメータが α = 0, 12 の場合に, コマンド twistedLogCohomology2 でそれぞれ計算したときの次元と計算時間を表したものである. 次元は左から順に H 2 , H 1 , H 0 の次元を表す. 計算時間の測定は Intel Xeon E5410(2.33GHz)
で行った.

13

表 1: Parameter α = 0(p, q) Dimensions
Timing

表 2: Parameter α = 1/2(p, q) Dimensions Timing(6, 7)(4, 1, 1)

2.96(6, 7)(4, 0, 0)0.20(6, 8)(5, 1, 1)

28.68(6, 8)(5, 0, 0)

3.58(6, 9)(6, 1, 1)

1752.05(6, 9)(6, 0, 0)483.71|

The computation time of twistedLogCohomology2 (seconds)> 3 hours(6, 10)(7, 0, 0)570.41(6, 10)

コマンド twistedLogCohomology2 の計算で, (p, q) = (6, 7), (6, 8) の場合と (p, q) = (6, 9), (6, 10) の場合とで計算時間に大きな差が現れるのは, 積分
アルゴリズムにおける b-関数の計算に大変な時間が費やされるためである.
我々はまた, 数式処理システム Risa/Asir 上で twisted logarithmic coho-

mology 群の middle cohomology 群の基底のみを計算するプログラムを実装
した. Risa/Asir には, 野呂 [17] による効率のよい b-関数計算のアルゴリ
ズムが実装されている. 我々のプログラムはパッケージ ns_twistedlog.rr[34] に収められているコマンド ns_twistedlog.twisted_log_cohomology
で実行できる.

下の表はこのコマンドで同じ多項式 f = xp + y q + xy qに対する twisted logarithmic cohomology 群 H 2 (Ω• (logf ), ∇) を計算した

ときの次元と計算時間を表したものである. 計算時間の測定は Intel Xeon

E5410(2.33GHz) で行った. Middle cohomology 群のみの計算ではあるが, コ
マンド twistedLogCohomology2 よりも大きな例が速く計算できることが分かる.

The computation time of ns_twistedlog.twisted_log_cohomology(seconds)

表 3: Parameter α = 0(p, q)
DimH 2 Timing

表 4: Parameter α = 1/2(p, q)
DimH 2 Timing(30, 31)28

5.54(30, 31)28

4.85(30, 32)29

6.03(30, 32)

29

5.30(30, 33)30

6.86(30, 33)30

6.26(30, 40)

37

16.63

(30, 40)

37

15.31

(30, 50)

42

28.71

(30, 50)

42

27.55

(30, 60)57

122.54(30, 60)

57

177.9214

制限加群 D/I +

4

リズム

"m

i=1 xi D における割り算アルゴ

この章ではホロノミック左加群 D/I の x1 = · · · = xm = 0 への制限における割り算アルゴリズムについて説明する. これは大阿久 [18] で述べられていることではあるが, 我々のアルゴリズムを正確に記述するために, この章にまとめておく.

4.1

左 D! -加群 (D! )r0

Ds における割り算アルゴリズム

D = K(x1 , · · · , xn , ∂1 , · · · , ∂n ), D% = K(xm+1 , · · · , xn , ∂m+1 , · · · , ∂n ) と0 s
0 s
する. 左 D% -加群 (D% )r
D を考える. (0)r
D に属する単項式は
0
% r
s
(D )
D の任意の単項式で割りきれないと約束する. (D% )r の基底を
e1 , · · · , er , Ds の基底を e−1 , · · · , e−s とする. (D% )r の項順序 < をひとつ固定
"r
"s
0 s
"r
する. p = i=1 pi ei + j=1 p−j e−j ∈ (D% )r
D に対して, i=1 pi ei /= 0"r0 sのとき in< (p) = in< ( i=1 pi ei ) と定義する. (0)r
D の元が余りに現れ
0 s
たときには 0 とみなすことで, 自由加群の場合と同様にして (D% )r
D に
0 s
% r
おける割り算アルゴリズムを示すことができる. これより (D )D 上でGröbner 基底の理論を展開することができる. 適用例は後述の例 4.2 を参照
のこと.

4.2

制限加群 D/I +"mi=1 xi D における割り算アルゴリズム

w = (w1 , · · · , wm , · · · , wm+1 , · · · , wn ) を重みベクトルで wi > 0 (i =1, · · · , m), wi = 0 (i = m + 1, · · · , n) を満たすとする. I を D のホロノ
ミックイデアルとし, b(s) を I の (−w, w) に関する b-関数, s0 をその最大非負整数根とする. I の (−w, w)-Gröbner 基底を {g1 , · · · , gk } とする. また
mi = ord(−w,w) (gi ) (i = 1, · · · , k) とする. このとき, [18, Theorem 5.7], [26,Theorem 5.2.6] により任意の p ∈ D は以下の表示を持つ.
p=k#ci gi +

i=1m#

xj rj +

j=1#

∂ β ∈Bs0 ,aβaβ ∂ β

(6)

∈D !

"
ただし ord(−w,w) (p) = s とすると, ci は ci = ∂ αi ∈Bs−m cαi ∂ αi , cαi ∈ D%i""mβ
なる形をしている.
a
∂
を
p
の
mod
I
+
β
!
β
∂ ∈Bs0 ,aβ ∈D
j=1 xj D に関す""mβる正規形といい, p ≡ ∂ β ∈Bs ,aβ ∈D! aβ ∂ (mod I + j=1 xj D) と表す.
0""m
Fs の任意の元は ∂ β ∈Bs ,aβ ∈D! aβ ∂ β + j=1 xj rj なる形に書けるので
0
Fs ⊂ (D% )ns
D と見なせる.

定理 4.1. ([18]) I をホロノミックイデアルとすると, p ∈ D の正規形を計算するアルゴリズムが存在する.

15

0
Proof. {∂ αi gi | i = i, · · · , k, ∂ αi ∈ Bs−mi } で生成される (D% )ns
D の部
0
分加群と p に対して, (D% )ns
D における割り算アルゴリズムを適用する.
[18, Lemma 5.1] により, この余りが p の正規形になることが分かる.
Fourier 変換 [26, p 229] で積分加群を制限加群に変換することにより, 積
分加群における割り算アルゴリズムも得られる.
例 4.2. n = 2, m = 1, (−w, w) = (−1, 0, 1, 0) とする.

L1 = 2x1 ∂1 ∂2 + 2x2 ∂22 + 2x2 ∂2 − ∂2 , L2 = 2x2 ∂1 ∂2 + 2x2 ∂22 + 2x2 ∂2 − ∂2 ,
L3 = −2x1 ∂12 + 2x2 ∂22 − 2x1 ∂1 + 2x2 ∂2 + ∂1 − ∂2とすると L1 , L2 , L3 が生成するイデアル I はホロノミックである.

p = −2x1 x2 ∂12 + x1 ∂1 ∂22 + 2∂23 + x2 ∂1とする. x1 = 0 への制限加群における p の正規形を求める.

L4 = −2x1 x2 ∂22 + 2x22 ∂22 − 2x1 x2 ∂2 + 2x22 ∂2 + x1 ∂2 − x2 ∂2とおくと {L1 , L2 , L3 , L4 } が I の (−w, w)-Grönber 基底となることが分かる.

ord(−w,w) (p) = 1 であり, mi = ord(−w,w) (Li ) とおくと (m1 , m2 , m3 , m4 ) =(0, 1, 1, 0) である. D1ns = D12 の基底を e1 = 1, e2 = ∂1 と表す. < をe1 < e2 と D1 の全次数辞書式順序 (x1 < ∂1 ) から定まる POT 順序とす
0
る. {∂1α1 ∂2α2 Li | i = 1, 2, 3, 4, α1 + α2 ≤ 1 − mi } が生成する D12
D2 =00
D1 e1 D1 e2 D2 e−1 の部分加群の <w -Grönber 基底は
g1 = L1 = (2x2 ∂22 + 2x2 ∂2 − ∂2 )e1 + 2x1 ∂1 ∂2 e−1 ,g2 = L3 − L1 = e2 − 2x1 (∂12 + ∂1 ∂2 + ∂1 )e−1となる. p = 2x2 e2 + 2x2 ∂23 e1 − 2x1 (x2 ∂12 − ∂1 ∂2 )e−1 と見なせる. このとき,

p = (∂2 − 1)g1 + x2 g2 + 2x1 (x2 ∂1 ∂2 + x2 ∂1 + ∂1 ∂2 ) + 2x2 ∂2 − ∂22 − 3∂2= (−x2 + ∂2 − 1)L1 + x2 L3 + 2x1 (x2 ∂1 ∂2 + x2 ∂1 + ∂1 ∂2 ) + 2x2 ∂2 − ∂22 − 3∂2となる. よって p の正規形は 2x2 ∂2 − ∂22 − 3∂2 である.

5多項式ベキの積分から定まるある超幾何積分の満

5.1

H 2 (Ω• (logf ), ∇) の基底から定まる超幾何積分の場合

たす差分方程式系への応用
次の形の超幾何積分p(α1 , · · · , αs ) =

1 2
s

C i=1

16

fi (x, y)αi −1 dxdy

(7)

!s
!s
を考える. Φ = i=1 fi (x, y)αi , f = i=1 fi (x, y) とおくと (7) は p(α) =3
Φ dxdyと書ける. 積分路 C は R2 \ {fi = 0 | i = 1, · · · , s} 上の 2-単体の
fC

C-係数の形式的有限和であるとする. 多価関数 Φ の分枝は C の各連結成分
上で一つ固定しておく. また, パラメータに関する差分と積分との順序交換が可能であると仮定する.
差分作用素 Eαi を Eαi • p(α1 , · · · , αi , · · · , αs ) = p(α1 , · · · , αi + 1, · · · , αs )と定める. この節では超幾何積分 (7) の満たす非斉次差分方程式系を求めるア
ルゴリズムを与える. このアルゴリズムの実装は数式処理システム Risa/Asirで行った. ただし, 実装したプログラムはパラメータが α1 , · · · , αs ∈/ Z である場合にのみ対応している. プログラムはパッケージ ns_twistedlog.rr [34] に収められている. なお, プログラムの実装にはパッケージ nk_restriction.rr[32] を使用した.
外微分 ∇ = d + dlogΦ∧ から定まる twisted logarithmic cohomology 群
dxdy
H 2 (Ω• (logf ), ∇) の基底を c1 dxdyとする. このとき fi' dxdy
は
f , · · · , cm f
f
dxdy
dxdy
mod ∇ で c1 f , · · · , cm f たちの C 線型結合で表される:

fi'

dxdy
dxdy
dxdy
≡ ai1 c1+· · ·+aim cm(mod ∇) (i = 1, · · · , s, + = 0, · · · , m).
fff

これより, アルゴリズム 5.1 のステップ 2 で定めた +k に対してfi'

dxdy #
dxdy
dxdy
dxdy
+
+k • gk= ai1 c1
+ · · · + aim cm
f
f
f
f

(8)

k

dxdy
が成り立つ. (8) から c1 dxdyを消去すると fi' dxdy
たちの間の
f , · · · , cm ff

非斉次一次関係式を得る:# (j) dxdy # (j)(j) dxdy
bi' fi'++ k • hk
= 0 (j = 1, · · · , n).
f
f
i,'

k

両辺に Φ を掛けて C 上で積分すると
1# (j) 1dxdy #
dxdy
(j)
(j)
bi'
Φfi'
+
(+k • hk )Φ
= 0.
f
f
C
C
i,'

となる. Eαi • p(α) =

k

3

C

Φfi dxdy
であるから
f

# j
# 1 (j)dxdy(j)bi' Eα' i • p +(+k • hk )Φ
= 0 (j = 1, · · · , n)
f
C
i,'

k

が成り立つ. これが p(α) が満たす非斉次差分方程式系である.
アルゴリズム 5.1.

入力 : f1 , · · · , fs ∈ C[x, y], パラメータ α1 , · · · , αs
3 !s
出力 : p(α) = C i=1 fiαi −1 dxdy が満たす非斉次差分方程式

17

(9)

1. アルゴリズム 3.5 のステップ 4 までを行い, H 2 (Ω• (logf ), ∇) の基底
c1 , · · · , cm を求める.
2. fi' の全次数を ni' とする (i = 1, · · · , s, + = 0, · · · , m). アルゴリズム 3.5のステップ 2 で得た Gröbner 基底 {+1 , · · · , +k } に対して, ord(1,1,−1,−1) (+i ) =mi とする.

3. {+i • xα y β | i = 1, · · · , k, α + β ≤ ni' − mi } を用いて fi' を c1 , · · · , cmと +i • xα y β の線型結合で表す. ( 積分加群における割り算アルゴリズムを用いる. )"(j)
4. ステップ 3 で得た関係式から c1 , · · · , cm を消去する. それを i,' bi' fi' +
"k
(j)
(j)
i=1 +i • hi = 0 とする.
"
"k 3 (j)
(j) '
(j)
dxdy
5.
= 0 が p(α) の満たす差分
i,' bi' Eαi • p +i=1 C (+i • hi )Φ f
方程式系.
定義 5.2. Es = C(α1 , · · · , αs )(Eα1 , · · · , Eαs ) を s 変数差分作用素環とする.

Es の左イデアル I が次の条件を満たすとき 0 次元であるという:"任意の 1 ≤ i ≤ s に対して ' p' (α)Eα' i /= 0 (p' (α) ∈ C(α1 , · · · , αs )) なる
元が I に存在する.

アルゴリズム 5.1 から得られる差分方程式系が斉次の場合には, 次の定理が成り立つ.
定理 5.3. アルゴリズム 5.1 から得られる差分作用素が生成する Es の左イ
デアルは 0 次元である. すなわち, 各変数に関して消去法を行うことで#'ci' Eα' i • p = 0 (i = 1, · · · , s)

なる形の差分方程式を得ることができる.

Proof. 仮定より dimH 2 (Ω• (logf )) = m であるから, 1, fi , · · · , fim は mod∇ に関して線型従属である. よってアルゴリズム 5.1 のステップ 4 において"
1, fi , · · · , fim の間の関係式を計算することができる. それを ' ci' fi' = 0 と"表す. このとき ' ci' Eα' i • p = 0 (i = 1, · · · , s) が成り立つ.
注意 5.4. 積分路 C が以下の条件を満たす場合, アルゴリズム 5.1 の差分方
程式系は斉次となる.

1. 任意の対数 1-形式 ω に対して,

3∂CΦω = 0 が成り立つ.

2. パラメータ αi を整数だけずらしても, 1 の条件が成り立つ.

18

fi が全て一次式であり, かつ fi = 0 によって定まる超平面たちが一般の位"s/ Z を満たせば,
i=1 αi ∈このような C が具体的に構成できることが知られている ([2, p 124 ∼ p 133]
置にある場合, パラメータが条件 α1 , · · · , αs ∈
/ Z,
を参照).

注意 5.5. アルゴリズム 5.1 のステップ 2 において一つの fi だけを考える

ことにより, Eαi に関する差分方程式だけを求めることができる. この方法はアルゴリズム 5.1 で得られた結果から消去法を行うよりも, 効率のよい計算である.
例 5.6. p(a, b, c) =3

xa−1 y b−1 (1−x−y)c−1 dxdy とする. ただし a, b, c ∈
/Z
dxdy
2
•
とする. アルゴリズム 3.5 より, H (Ω (logf ), ∇) = C f となる. アルゴリCydxdy
ズム 5.1 より, 対数 2-形式 xdxdy
f ,f ,(1−x−y)dxdyfは次の関係式を満たす

:
xdxdy
dxdy
dxdy
ydxdy
dxdy
dxdy
−a
+ + • h1
= 0, (a + b + c)−b
+ + • h2
= 0,
f
f
f
f
f
f
(1 − x − y)dxdy
dxdy
dxdy
(a + b + c)−c
+ + • h3
= 0.
fff
(a + b + c)

ただし,

+ = −y(y − 1)∂x ∂y + y(y + 1)∂y2 − {bx + (b + c)y − b}∂x + {(a + b + c)y − b}∂y ,11
h1 = {(a + b + c)x + cy}, h2 = −y, h3 = − {(a + b + c)x + (b + c)y}bbである. よって p は次の差分方程式を満たす:
1
1
dxdy
dxdy
{(a + b + c)Ea − a} • p + (+ • h1 )Φ
= 0, {(a + b + c)Eb − b} • p + (+ • h2 )Φ
= 0,
f
f
C
1C
dxdy
{(a + b + c)Ec − c} • p + (+ • h3 )Φ
= 0.
f
C

Risa/Asir で超幾何積分 (7) の差分方程式系を計算するコマンドは ns_twistedlog.difference_equationである. 非斉次項の計算を行うにはオプション inhomo を用いる.
[1630] load("nk_restriction.rr");[1859] load("ns_twistedlog.rr");[1875] ns_twistedlog.difference_equation([x,y,1-x-y],[a,b,c],[x,y]|inhomo=1);-- nd_weyl_gr :0sec(0.000881sec)-- weyl_minipoly_by_elim :0.004sec + gc : 0.004sec(0.006541sec)
Order : 1[[(-ea+1)*b*a-ea*b^2-ea*c*b,[((-y^2+y)*dy-b*x+(-b-c)*y+b)*dx+(y^2-y)*dy^2+((a+b+c)*y-b)*dy,(a+b+c)*x+(b+c)*y]],[-eb*a+(-eb+1)*b-eb*c,[((-y^2+y)*dy-b*x+(-b-c)*y+b)*dx+(y^2-y)*dy^2+((a+b+c)*y-b)*dy,-y]],[-ec*b*a-ec*b^2+(-ec+1)*c*b,[((-y^2+y)*dy-b*x+(-b-c)*y+b)*dx+(y^2-y)*dy^2+((a+b+c)*y-b)*dy,(-a-b-c)*x-c*y]]]非斉次項を計算するオプションを指定した場合,[[E1, [OP1,P1], [OP2,P2], · · · ], [E2, [OP3,P3], · · · ], · · · ]19

のようなリストのリストが返ってくる. E1,E2,· · · は差分作用素, OP1,OP2,· · ·は微分作用素, P1,P2,· · · は多項式である. OP1,· · · , P1,· · · はそれぞれ (9)の +k , hk に対応するものである.
(j)

(j)

注意 5.7. ns_twistedlog.difference_equation では, パラメータの入力として次のことを仮定している.

1. 多項式のベキの部分は有理数であるか, または a + 1/2 のような (パラメータを表す 1 文字)+(有理数) の形をしている.
2. パラメータは全て相異なる.
3. パラメータを表す変数の係数は 1 である.
従って, 以下のような入力に対しては正しく動かない.
[289] ns_twistedlog.difference_equation([x,y,1-x-y],[a,b,a-b],[x,y]);-- nd_weyl_gr :0.004114sec(0.005315sec)-- weyl_minipoly_by_elim :0.002413sec(0.01103sec)
Order : 1[ea,-eb,-1] /*間違った出力*/[290] ns_twistedlog.difference_equation([x,y,1-x-y],[-a,-b,-c],[x,y]);-- nd_weyl_gr :0.003542sec(0.004116sec)-- weyl_minipoly_by_elim :0.007714sec(0.008479sec)
Order : 1[(-ea+1)*a-ea*b-ea*c,eb*a+(eb-1)*b+eb*c,-ec*a-ec*b+(-ec+1)*c] /*間違った出力*/

次の注意に出てくるコマンド ns_twistedlog.twisted_log_cohomology
や, 後に出てくる微分方程式系を計算するコマンド twistedlog.differential_equationに対しては, このような注意は払わなくてよい.
注意 5.8. ns_twistedlog.difference_equation ではパラメータを不定元とみなして計算している. 例えば, ns_twistedlog.twisted_log_cohomology
は twisted logarithmic cohomology 群の middle cohomology 群の基底のみを計算するコマンドであるが, 多項式のベキが整数の場合とパラメータの場
合では, 次のように出力結果が異なる場合がある.
[1971] ns_twistedlog.twisted_log_cohomology([x,y,1-x-y],[-1,-2,-3],[x,y]);-- nd_weyl_gr :0.00172sec(0.001897sec)-- weyl_minipoly_by_elim :0.004114sec(0.004109sec)-- generic_bfct_and_gr :0.007336sec(0.007513sec)
generic bfct : [[-1,1],[s,1],[s-7,1]]
S0 : 7
B_{S0} length : 36-- fctr(BF) + base :0.02426sec(0.02503sec)
dimension : 3[y^2*x^5,y^7,1]

20

[1972] ns_twistedlog.twisted_log_cohomology([x,y,1-x-y],[a,b,c],[x,y]);-- nd_weyl_gr :0.00335sec(0.003553sec)-- weyl_minipoly_by_elim :0.00758sec(0.007857sec)-- generic_bfct_and_gr :0.013sec(0.01995sec)
generic bfct : [[-1,1],[s,1],[s+a+b+c-1,1]]S0 : 0
B_{S0} length : 1-- fctr(BF) + base :0.001232sec(0.001368sec)
dimension : 1[1]

パラメータは不定元として扱われるため, 整数でないという以外にも, パラ
メータが取ってはいけない値の集合 (除外集合) が存在する. 除外集合は, 積
分アルゴリズムにおける b-関数の根でパラメータを含むものが非負整数にならないという条件と, Gröbner 基底計算の先頭項が消えないという条件から定まる. 除外集合を計算するには, オプション excp を用いる.
[1876] ns_twistedlog.difference_equation([x,y,1-x-y],[a,b,c],[x,y]|excp = 1);
Order : 1
[Operator,[ec*a^2+(ec-1)*c*a-ec*b^2+(-ec+1)*c*b,eb*a+(eb+ec-1)*b,ea+eb+ec-1],
Not integer,[a,b,c],Not non-negative integer,[-a-b-c+1],Not zero,[a,a-b,a+b+2*c,a+b+c,b,a+c,a+b,c]]

この場合, 除外集合は{a ∈ Z}∪{b ∈ Z}{c ∈ Z}∪{a+b+c−1 ∈ N∪{0}}∪{a+b+c = 0}∪{a+b+2c = 0}

∪ {a + b = 0} ∪ {a − b = 0} ∪ {a + c = 0} ∪ {a = 0} ∪ {b = 0} ∪ {c = 0}である.

例 5.9. p(a, b, c, d) =3

Cxa−1 y b−1 (1 − x − y)c−1 (1 − 2x)d−1 dxdy とする. ただし a, b, c, d, a + b + c + d ∈/ Z, Re(a), Re(b), Re(c), Re(d) > 0 とし, C は

x = 0, y = 0, 1 − x − y = 0, 1 − 2x = 0 で囲まれた R2 の有界領域の一つとする. アルゴリズム 5.1 より, p は次の差分方程式系を満たす:{(a + b + c + d)Ed2 − 2(a − b − c)Ea + a − b − c − d} • p = 0, {2Ea + Ed − 1} • p = 0,{2(b + c)(b + c + 1)(a + b + c + d)Eb2 + b(b + 1)(a + 3b + 3c + 2d)Ea− b(b + 1)(a + 2b + 2c + 2d)} • p = 0, {bEa + (b + c)Eb − b} • p = 0,{2(b + c)(b + c + 1)(a + b + c + d)Ec2 + c(c + 1)(a + 3b + 3c + 2d)Ea− c(c + 1)(a + 2b + 2c + 2d)} • p = 0, {cEa + (b + c)Ec − c} • p = 0,{2(a + b + c + d)Ea2 − (3a + b + c + 2d)Ea − a} • p = 0.

各変数に関して消去法を行うことにより, p は次の差分方程式系を満たす:{2(a + b + c + d)Ea2 − (3a + b + c + 2d)Ea + a} • p = 0,{2(b + c + 1)(a + b + c + d)Eb2 − (b + 1)(a + 3b + 3c + 2d)Eb + b(b + 1)} • p = 0,{2(b + c + 1)(a + b + c + d)Ec2 − (c + 1)(a + 3b + 3c + 2d)Ec + c(c + 1)} • p = 0,{(a + b + c + d)Ed2 + (a − b − c)Ed − d} • p = 0.
21

コマンド ns_twistedlog.difference_equation で各変数に関する差分方程式を計算するにはオプション shift を用いる.
[1877] ns_twistedlog.difference_equation([x,y,1-x-y,1-2*x],[a,b,c,d],[x,y]);-- nd_weyl_gr :0.004001sec(0.001659sec)-- weyl_minipoly_by_elim :0.004sec(0.005839sec)
Order : 2[(2*ea-ed^2-1)*a+(-2*ea-ed^2+1)*b+(-2*ea-ed^2+1)*c+(-ed^2+1)*d,(-4*ea^2+3*ed^2+1)*a+(4*ea^2+ed^2-1)*b+(4*ea^2+ed^2-1)*c+(2*ed^2-2)*d,((-2*eb-ed^2+1)*b-2*eb*c)*a+(2*eb-ed^2-1)*b^2+((4*eb-ed^2-1)*c+(-ed^2+1)*d)*b+2*eb*c^2,((-4*eb^2-ed^2+1)*b^2+(-8*eb^2*c-4*eb^2-ed^2+1)*b-4*eb^2*c^2-4*eb^2*c)*a+(4*eb^2-3*ed^21)*b^3+((12*eb^2-3*ed^2-1)*c+(-2*ed^2+2)*d+4*eb^2-3*ed^2-1)*b^2+(12*eb^2*c^2+(8*eb^2-3*ed^2-1)*c+(-2*ed^2+2)*d)*b+4*eb^2*c^3+4*eb^2*c^2,(2*ec*b+(2*ec+ed^2-1)*c)*a-2*ec*b^2+(-4*ec+ed^2+1)*c*b+(-2*ec+ed^2+1)*c^2+(ed^2-1)*d*c,(-4*ec^2*b^2+(-8*ec^2*c-4*ec^2)*b+(-4*ec^2-ed^2+1)*c^2+(-4*ec^2-ed^2+1)*c)*a+4*ec^2*b^3+(12*ec^2*c+4*ec^2)*b^2+((12*ec^2-3*ed^2-1)*c^2+(8*ec^2-3*ed^2-1)*c)*b+(4*ec^2-3*ed^2-1)*c^3+((-2*ed^2+2)*d+4*ec^2-3*ed^2-1)*c^2+(-2*ed^2+2)*d*c,(ed^2+ed)*a+(ed^2-ed)*b+(ed^2-ed)*c+(ed^2-1)*d][1879] ns_twistedlog.difference_equation([x,y,1-x-y,1-2*x],[a,b,c,d],[x,y]|shift = a);-- nd_weyl_gr :0.006528sec(0.006691sec)-- weyl_minipoly_by_elim :0.02177sec(0.02196sec)
Order : 2[(-2*ea^2+3*ea-1)*a+(-2*ea^2+ea)*b+(-2*ea^2+ea)*c+(-2*ea^2+2*ea)*d][1880] ns_twistedlog.difference_equation([x,y,1-x-y,1-2*x],[a,b,c,d],[x,y]|shift = b);-- nd_weyl_gr :0.007233sec(0.007389sec)-- weyl_minipoly_by_elim :0.02421sec(0.0244sec)
Order : 2[((2*eb^2-eb)*b+2*eb^2*c+2*eb^2-eb)*a+(2*eb^2-3*eb+1)*b^2+((4*eb^2-3*eb)*c+(2*eb^2-2*eb)*d+2*eb^2-3*eb+1)*b+2*eb^2*c^2+(2*eb^2*d+2*eb^2-3*eb)*c+(2*eb^2-2*eb)*d][1881] ns_twistedlog.difference_equation([x,y,1-x-y,1-2*x],[a,b,c,d],[x,y]|shift = c);-- nd_weyl_gr :0.006166sec(0.006276sec)-- weyl_minipoly_by_elim :0.02168sec(0.02187sec)
Order : 2[(-2*ec^2*b+(-2*ec^2+ec)*c-2*ec^2+ec)*a-2*ec^2*b^2+((-4*ec^2+3*ec)*c-2*ec^2*d-2*ec^2+3*ec)*b+(-2*ec^2+3*ec-1)*c^2+((-2*ec^2+2*ec)*d-2*ec^2+3*ec-1)*c+(-2*ec^2+2*ec)*d][1882] ns_twistedlog.difference_equation([x,y,1-x-y,1-2*x],[a,b,c,d],[x,y]|shift = d);-- nd_weyl_gr :0.006479sec(0.006647sec)-- weyl_minipoly_by_elim :0.02496sec(0.02515sec)
Order : 2[(ed^2+ed)*a+(ed^2-ed)*b+(ed^2-ed)*c+(ed^2-1)*d]

22

5.2

H 1 (Ω• (logf ), ∇) の基底から定まる超幾何積分の場合!s!sf = i=1 , Φ = i=1 fiαi , ∇ = d + dlogΦ とする. g1 , · · · , gt ∈ C[x, y] と fに付随する対数 1-形式 ω ∈ Ω1 (logf ) に対して, 超幾何積分
1 2
tq(β1 , · · · , βt ) =giβi ω

(10)

C i=1

を考える. (10) に対して次を仮定する:

仮定:gi' ω (1 ≤ i ≤ t, 0 ≤ + ≤ d) は全て H 1 (Ω• (logf ), ∇) に属する.

(11)

ただし, d = dimH 1 (Ω• (logf ), ∇) である. 積分路 C は (7) に対して述べた条件のうち, 2-単体の部分を 1-単体に変えたものをとる. この節では, 仮定 (11)を満たす超幾何積分 (10) の差分方程式系を求めるアルゴリズムを与える. ア
ルゴリズムの実装は行っていない.
まず, 対数 1-形式 ω = pdx+qdy
が H 1 (Ω• (logf ), ∇) の元となることと, ωfが微分方程式∂x • q − ∂y • p +

s
#
1
αj
(fy q − fx p) +((fj )y q − (fj )x p) = 0
f
f
j=1 j

(12)

を満たすこととが同値であることに注意する.

Eβj • q =1 2
tgiβi gj ωC i=1が成り立つから, 仮定 (11) の下で, アルゴリズム 5.1 において H 2 (Ω• (logf ), ∇)の基底 c1 , · · · , cm を H 1 (Ω• (logf ), ∇) の基底 ω1 , · · · , ωd に, fi' を gi' ω に置
き換えることで, q(β) の満たす差分方程式系を計算するアルゴリズムが得られる. 斉次の場合には定理 5.3 と同様にして, 差分方程式系は 0 次元である
ことが証明できる.
例 5.10.

q(k, m) =1(xk y n−k+1 + xn−m+1 y m )C

ydx − xdy
xy(x − y)を考える. ただし, k, m, n は 0 以上の整数であり 0 ≤ k, m ≤ n + 1 であるとする. また, C は注意 5.4 の条件で対数 1-形式の部分を対数 0-形式に, Φ の部分を xk y n−k+1 + xn−m+1 y m に変えた条件を満たすと仮定する(この例の場合の Φ の取り方は後述). f = xy(x − y) とすると, Ω1 (logf ) =0
C[x, y]ω1 C[x, y]ω2 となる. ここで, ω1 = ydx−xdy, ω2 = xy(x−y)= 12 dlogfffである. Φ = (x − y)−n のとき, h1 ω1 + h2 ω2 ∈ H 1 (Ω• (logf ), ∇) に対して,

h1 , h2 は次の微分方程式の解となる:(x∂x + y∂y ) • h1 − (1 + n)h1 + xy(∂x + ∂y ) • h2 = 0
23

これより特に, xk y n−k+1 ω1 (0 ≤ k ≤ n + 1) は H 1 (Ω• (logf ), ∇) の元である
ことが分かる. ところで, xk y n−k ∈ Ω0 (logf ) に対して,∇(xk y n−k ) = (kxk y n−k+1 + (n − k)xk+1 y n−k )ω1となるから,

kxk y n−k+1 ω1 ≡ −(n − k)xk+1 y n−k ω1 (mod∇)(13)が成り立つ.
11
k+1 n−kn−m+1 mEk •q =(xy+xy )ω1 , Em •q =(xk y n−k+1 +xn−m y m+1 )ω1
C

Cであるから, (13) より

Ek • q =
となる.

k
m−n
q, Em • q =
q,
k−n
m

6

指数関数と多項式ベキの積分から定まるある超幾

6.1

H 2 (Ω• (logf ), ∇) の基底から定まる超幾何積分の場合

何積分が満たす微分方程式系への応用

f1 , · · · , fs ∈ C[x, y], g(t, x, y) ∈ C[t1 , · · · , tm , x, y], α1 , · · · , αs ∈ C に対して
1
s
2
F (t1 , · · · , tm ) =exp(g(t, x, y))fi (x, y)αi −1 dxdy
(14)
C

!s

i=1

!s
とおく. Φ = exp(g(t1 , · · · , tm , x, y)) i=1 fi (x, y)αi , f = i=1 fi (x, y) とお3
くと F (t) = C Φ dxdyと書ける. 積分路 C は (7) に対して述べた条件のうf

ち, 差分の部分を微分に変えたものをとる. この節では超幾何積分 (14) が満たす微分方程式系を求めるアルゴリズムを与える. このアルゴリズムの実

装は数式処理システム Risa/Asir で行った. ただし, 実装したプログラムは

α1 , · · · , αs ∈/ Z である場合にのみ対応している. プログラムはパッケージ
ns_twistedlog.rr に収められている.
このとき,
1
1
dxdy
∂t'i • F (t) =Φ∂t'i • exp(g)exp(g)
f
Cとなることに注意すると, アルゴリズム 5.1 において (5) を Li + qi gx − pi gy

1に, fi' を exp(g)∂t'i • exp(g) に置き換えることで, F (t) の満たす非斉次微分方

程式系を計算するアルゴリズムが得られる. さらに定理 5.3 の証明と同様にして, 斉次の場合にはこのアルゴリズムから得られる微分方程式系は 0 次元であることが証明できる.

24

例 6.1.

F (t1 , t2 ) =1

exp(t1 x2 + t2 y 2 )(x + y)a−1 dxdy
Cを考える. ただし a ∈/ Z とし, C は注意 5.4 の条件 1 を満たすものをとる.

H 2 (Ω• (logf ), ∇) = 2 であり, F (t1 , t2 ) が満たす微分方程式系は次のようになる.
{2t1 (t1 + t2 )∂t1 + t1 + at2 } • F = 0, {2t2 (t1 + t2 )∂t2 + t2 + at1 } • F = 0,
{4t1 (t1 + t2 )∂t21 − 3t21 − 6at1 t2 − a(a + 2)t22 } • F = 0,
{4t2 (t1 + t2 )∂t22 − 3t22 − 6at1 t2 − a(a + 2)t21 } • F = 0

この微分方程式系はホロノミックになっており, ホロノミックランクは 1 である.
Risa/Asir で超幾何積分 (14) の満たす微分方程式系を計算するコマンド
は ns_twistedlog.differential_equation である. また, D の左イデア
ルがホロノミックかどうかの判定はコマンド ns_twistedlog.holonomic で行える.
[1883] ns_twistedlog.differential_equation(t1*x^2+t2*y^2,[x+y],[a],[x,y],[t1,t2]);-- nd_weyl_gr :0.004739sec(0.004889sec)-- weyl_minipoly_by_elim :0.00437sec(0.004545sec)
Order : 2[(2*t1*t2+2*t1^2)*dt1+a*t2+t1,(-4*t1^2*t2^2-8*t1^3*t2-4*t1^4)*dt1^2+(a^2+2*a)*t2^2+
6*a*t1*t2+3*t1^2,(2*t2^2+2*t1*t2)*dt2+t2+a*t1,(-4*t2^4-8*t1*t2^3-4*t1^2*t2^2)*dt2^2+3*t2^2+6*a*t1*t2+(a^2+2*a)*t1^2][1884] G = @@$[1885] ns_twistedlog.holonomic(G,[t1,t2],[dt1,dt2]);
Hilbert polynomial : 7/2*x^2-1/2*x+2
holonomic : Yes
holonomic rank : 1

6.2

H 1 (Ω• (logf ), ∇) の基底から定まる超幾何積分の場合!s!sf = i=1 fi (x, y), Φ = i=1 fiαi , ∇ = d + dlogΦ∧ とする. f に付随する
対数 1-形式 ω = pdx+qdyに対して, 超幾何積分
fG(t1 , · · · , tm ) =1

C

exp(g(t1 , · · · , tm , x, y))を考える. (15) に対して, 次の仮定を置く:

t2

hi (x, y)βi ω

(15)

i=1

1
∂ ' •exp(g)ω (1 ≤ i ≤ m, 0 ≤ + ≤ d) が H 1 (Ω• (logf ), ∇) に属する.
exp(g) ti(16)
1•
ただし, d = dimH (Ω (logf ), ∇) と置いた. 積分路 C は (7) に対して述べ仮定:

た条件のうち, 2-単体の部分を 1-単体に置き換えたものをとる. この節では,

25

仮定 (16) を満たす超幾何積分 (15) の微分方程式系を計算するアルゴリズムを与える. アルゴリズムの実装は行っていない.
1
G(t) が仮定 (16) を満たすことは, exp(g)∂t'i • exp(g)ω が微分方程式 (12)を満たすことと同値である.

t2∂t'i • G(x) =i=1hβi i (

1∂ ' • exp(g))ω
exp(g) tiが成り立つから, 仮定 (16) の下で 5.1 において H 2 (Ω• (logf ), ∇) の基底

1c1 , · · · , cm を H 1 (Ω• (logf ), ∇) の基底 ω1 , · · · , ωd に, fi' を exp(g)∂t'i •exp(g)ω
に置き換えることで, G(x) の満たす微分方程式系を計算するアルゴリズムが得られる. 斉次の場合には定理 5.3 と同様にして, 微分方程式系は 0 次元であることが証明できる.
例 6.2.

G(t1 , t2 ) =1xyexp( t1 + t2 )xk y n−k+1 ωyxCを考える. ここで, ω = ydx−xdyxy(x−y) である. また, k, n は 0 以上の整数で0 ≤ k ≤ n + 1 とし, C は注意 5.4 の条件で対数 1-形式の部分を対数 0-形式に, Φ の部分を xk y n−k+1 に置き換えた条件を満たすと仮定する (この例の場
合の Φ の取り方は後述). f = xy(x − y), Φ = (x − y)−n とおくと, 例 5.10と同様にして, xk y n−k+1 ω (0 ≤ k ≤ n + 1) は H 1 (Ω• (logf ), ∇) の元であり,これらの間に (13) と同様の関係式が成り立つ.
1
1
x
y
x
y
∂t1 •G =exp( t1 + t2 )xk+1 y n−k ω, ∂t2 •G =exp( t1 + t2 )x1k−1 y n−k+2 ω
y
x
y
x
C
C
となるから,∂t1 • G =が成り立つ.

7kk−n−1
G, ∂t2 • G =
G
k−n
k−1

アルゴリズムの比較・検討(7), (14) の形の超幾何 2 重積分の満たす差分方程式系, 微分方程式系はChyzak アルゴリズム [5, 6, 7] でも計算することができる. Chyzak アルゴリ
ズムは Maple の Mgfun パッケージ [29] のコマンド creative_telescopingに実装されている. ただし, creative-telescoping は (10), (15) の形の超幾何 1 重積分の満たす差分方程式系, 微分方程式系の計算には対応していない.
3
例 7.1. Maple14 上で creative_telescoping を用いて p(a, b, c) = C xa−1 y b−1 (1−x − y)c−1 dxdy の満たす差分方程式系を計算すると次のように出力される.

26

> with(Mgfun);> f := x^(a-1)*y^(b-1)*(1-x-y)^(c-1);
f := x^(a-1)*y^(b-1)*(1-x-y)^(c-1)> l := creative_telescoping(f,[a::shift,b::shift,c::shift,x::diff],y::diff);l := [[-x*_F(a, b, c, x)+_F(a+1, b, c, x), 0], [(-b+b*x)*_F(a, b, c, x)+(b+c)*_
F(a, b+1, c, x), (-y+y*x+y^2)*_f(a, b, c, x, y)], [(c*x-c)*_F(a, b, c, x)+(b+c)*_F(a, b, c+1, x), (y-y*x-y^2)*_f(a, b, c, x, y)], [(-1+2*x+a-a*x-b*x-c*x)*_F(a, b, c, x)+(-x+x^2)*(diff(_F(a, b, c, x), x)), -y*x*_f(a, b, c, x, y)]]> sys := {l[1][1],l[2][1],l[3][1],l[4][1]};sys := {-x*_F(a, b, c, x)+_F(a+1, b, c, x), (-b+b*x)*_F(a, b, c, x)+(b+c)*_F(a,b+1, c, x), (c*x-c)*_F(a, b, c, x)+(b+c)*_F(a, b, c+1, x), (-1+2*x+a-a*x-b*x-c*x)*_F(a, b, c, x)+(-x+x^2)*(diff(_F(a, b, c, x), x))}> creative_telescoping(LFSol(sys),[a::shift,b::shift,c::shift],x::diff);[[-a*_F(a, b, c)+(b+a+c)*_F(a+1, b, c), (-x+x^2)*_f(a, b, c, x)], [-b*_F(a, b,c)+(b+a+c)*_F(a, b+1, c), (b*x-x^2*b)*_f(a, b, c, x)/(b+c)], [-c*_F(a, b, c)+(b+a+c)*_F(a, b, c+1), (c*x-c*x^2)*_f(a, b, c, x)/(b+c)]]

表 5 はアルゴリズム 5.1 と Chyzak アルゴリズムの計算時間を斉次差分方程式系の場合に比較したものである.

計算時間の比較は Intel Xeon

E5410(2.33GHz) で行った. 項目 System は差分方程式系を計算するのに費やした時間, 項目 a1 -shift は差分作用素を Ea1 しか含まない差分方程式を計算するのに費やした時間である. ただしアルゴリズム 5.1 の a1 -shift における計算は, 注意 5.5 に述べた方法を用いている. また Chyzak アルゴリズ

ムでは, 差分作用素系の計算時間 (項目 System の時間) + 消去法にかかった
時間を a1 -shift での経過時間としている.

27

表 5: The comparison of the computing time (seconds)

Integrand

Alg. 5.1

Chyzak alg.
Rank

Systema1 -shift

1.35

1.35

F2

3

3

0.28

0.096

3

12.67

12.75

F3

4

4

96.24

10.00

4

34.30

35.53

F4

5

30.49

161.19

G3,5

2

2

0.27

0.27

2

1.61

1.61

G3,6

3

3

35.5

35.5

1

5.72

5.72

> 3 hours

4

10.25

10.25

37.87

37.87

> 3 hours

H3,4

2

2

4.56

8.44

1

H3,5

3

3

490.25457.20> 3 hours> 3 hours

3

107.83108.64

H3,6

|

G3,7

|

2

|

0.024

|

0.04

|

2

|

2

|

F1

|

a1 -shift|

System

|

Rank

|

DimH

2

F1 = F (1 − 2x)a4 −1 , F2 = F (1 − 2x − 3y)a4 −1 , F3 = F (1 − 2x − 3y)a4 −1 (1 − x)a5 −1 ,F4 = F (1 − 2x − 3y)a4 −1 (1 − 2y)a5 −1 , Gp,q = (xp + y q + xy q−1 )a1 −1 , Hp,q = Gp,q (x + y)a2 −1
ただし, F = xa1 −1 y a2 −1 (1 − x − y)a3 −1
表 5 から分かるように, アルゴリズム 5.1 は H 2 (Ω(logf ), ∇) の次元が大きいほど, また因子の次数が大きくなるほど計算時間が長くなる傾向にある.
また, 差分方程式系を計算するよりも Ea1 に関する差分方程式を計算する方が計算時間が短い場合がある.

F1 , F2 , F3 , F4 の場合には, F3 を除けばアルゴリズム 5.1 の方が計算時間が短い. Gp,q , Hp,q の場合には, (p, q) が小さい場合を除いて Chyzak アルゴリ
ズムの方が計算時間が短い.

G3,7 , H3,6 の場合にボトルネックになっているのは, 積分アルゴリズムにおけるパラメータ付きの b-関数の計算である. これは, 積分アルゴリズムの計算に使用しているパッケージ nk_restriction.rr では, パラメータ付きのb-関数の計算が野呂 [17] による効率のよいアルゴリズムではなく, 消去法によってなされるためである. いくつか計算を行った結果, 多項式の次数が大きい場合や, 多項式に含まれる単項式の次数の差が大きい場合には, 消去法によるパラメータ付きの b-関数の計算時間が長くなる傾向があることが分かった.
以上のことから, 多項式の次数が大きくない場合や, 多項式に含まれる単項式の次数の差が大きくない場合には twisted logarithmic cohomology 群の方法が, それ以外の場合には Chyzak の方法が効率がよいと考えられる.

3 変数以上の場合, (5) を 3 変数以上の場合に拡張した微分作用素がなす28

右イデアルがホロノミックの場合には, twisted logarithmic cohomology 群の方法が適用できる. その場合には Chyzak の方法より効率がよい場合がある
が, twisted logarithmic cohomology 群の方法では計算できない場合があるので, 注意が必要である. 実際, [10, 6.4 Example4] の多項式に対しては twisted

logarithmic cohomology 群の方法は適用できない. また表には挙げていないが, 積分アルゴリズムの方法は, 表で用いた例に対しては twisted logarithmic
cohomology 群の方法, Chyzak の方法よりも格段に遅くなってしまう. ただ
3b1
し, 例えば F (x, y) = a xt+y+t
10 dt のような ”疎” な多項式の積分の満たす微分方程式系の計算に対しては, Chyzak アルゴリズムよりも積分アルゴリ

ズムの方法が効率のよいことが知られている [16, Example 3]. F (x, y) の満
たす微分方程式系は twisted logarithmic cohomology 群の方法では求められ
ない.

参考文献
[1] G. Almkvist, D. Zeilberger, The method of differentiating under the
integral sign, Journal of Symbolic Computation 10, 571-591, 1990.
[2] 青本和彦, 喜多通武, 超幾何関数論, シュプリンガー・フェアラーク東京
株式会社, 1994.
[3] J. Björk, Rings of Differential Operators, North-Holland, New York,
1979.
[4] F.J. Calderón-Moreno, Logarithmic differential operators and logarithmic de Rham complexes relative to a free divisor, Annales Scientifiquesde lÉcole Normale Supérieure (4) 32, 701-714, 1999.
[5] F. Chyzak, Gröbner Bases, Symbolic Summation and Symbolic Integration, London Mathematics Lecture Notes Series, val.251, 32-60,
1998.
[6] F. Chyzak, An Extension of Zeilbeger’s Fast Algorithm of General
Holonomic Functions, Discrete Mathematics 217, 115-134, 2000.
[7] F. Chyzak and B. Salvy, Non-commutative elimination in Ore algebras
proves multivariate identities, J. Symbolic Computation, vol. 26, 187227, 1998.
[8] F.J. Castro-Jiménez and N. Takayama, The computation of the logarithmic cohomology for plane curves, Journal of Algebra. 322, 38393851, 2009.

29

[9] F.J. Castro-Jiménez and J.M. Ucha, Explicit computation theorems
for D-modules, Journal of Symbolic Computation 32, 677-685, 2001.
[10] F.J. Castro-Jiménez and J.M. Ucha, Gröbner bases and logarithmic
D-modules, Journal of Symbolic Computation, 41, 317-335, 2006.
[11] D. Cox, J. Little, D. O’Shea, Using Algebraic Geometry, Springer, New
York, 1998.
[12] D. Eisenbud, Commutative Algebra with a view toward Algebraic Geometry, Springer, New York, 1995.
[13] A. Logar, B. Sturmfels, Algorithms for the Quillen-Suslin Theorem,
Journal of Algebra, 145, 231-239, 1992.
[14] P.J. Hilton, U. Stammbach, A course in homological algebra, Springer,1970.
[15] 松村英之, 可換環論, 共立出版, 1980.
[16] H. Nakayama, K. Nishiyama, An algorithm of computing inhomogeneous differential equations for definite integrals, Lecture Notes In
Computer Science, 6327, 221-232, 2010.
[17] M. Noro, An efficient modular algorithm for computing the global Bfunction, in: A.M. Cohen, X.S. Gao, N. Takayama (Eds.), Mathematical Software, Proceedings of the First International Congress ofMathematical Software, World Scientific, Beijing, pp. 147-157, 2002.
[18] T. Oaku, Algorithms for b-functions, restrictions, and algebraic local
cohomology groups of D-modules, Advances in Applied Mathematics,
19, 61-105, 1997.
[19] 大阿久俊則, D 加群と計算数学, 朝倉書店, 2002.
[20] T. Oaku Y. Shiraki and N. Takayama, Algebraic Algorithm for Dmodules and numerical analysis, Computer mathematics (Proceedingsof ASCM 2003), 23-39, Lecture Notes Ser. Comput., 10, World Sci.
Publ., River Edge, NJ, 2003.
[21] T. Oaku and N. Takayama, An algorithm for de Rham cohomology
groups of the complement of an affine variety via D-module computation, Journal of Pure and Applied Algebra, 139, 201-233, 1999.
[22] T. Oaku and N. Takayama, Algorithms for D-modules−restriction,tenser product, localization, and local cohomology groups, Journal ofPure and Applied Algebra 156, 267-308, 2001.
30

[23] T. Oaku, N. Takayama, H. Tsai, Polynomial and Rational Solutions ofHolonomic Systems, Journal of Pure and Applied Algebra, 164, 199 220, 2001.
[24] O. Ore, Theory of non-commutative polynomials, Annals of Mathematics, 34, 480-508, 1933.
[25] K. Saito, Theory of logarithmic differential forms and logarithmic vector fields, Journal of Faculty of Science, University of Tokyo. Section
IA. 27, 265-291, 1980.
[26] M. Saito, B. Sturmfels, N. Takayama, Gröbner deformations of hypergeometric differential equations, Algorithms and Computation in Mathematics, 6. Springer-Verlag, Berlin, 2000. viii+254 pp.
[27] D. Zeilberger, A holonomic systems approach to special functions identities, Journal of Computational and Applied Mathematics 32, 321-368,
1990.
[28] D. Zeilberger, The method of creative telescoping, Journal of Symbolic
Computation 11, 195-204, 1991.
[29] F. Chyzak, Mgfun,
http://algo.inria.fr/chyzak/mgfun.html[30] D. Grayson and M. Stillman, Macaulay2, a software system for researchin algebraic geometry,
http://www.math.unic.edu/macaulay2[31] A. Leykin, H, Tsai, D-module package for Macaulay2,
http://www.math.uiuc.edu/Macaulay2[32] H. Nakayama, K. Nishiyama, nk_restriction,rr,
http://www.math.kobe-u.ac.jp/~nakayama/nk_restriction.rr[33] K. Nishitani, twistedLogCohomology.m2,
http://www.math.sci.kobe-u.ac.jp/cgi/cvsweb.cgi/OpenXM/src/
math-misc/twistedLogCohomology.m2[34] K. Nishitani, ns_twistedlog.rr,
http://www.math.sci.kobe-u.ac.jp/cgi/cvsweb.cgi/OpenXM/src/
asir-contrib/packages/src/ns_twistedlog.rr[35] M. Noro, et al., Risa/Asir,
http://www.math.kobe-u.ac.jp/Asir/asir-jp.html

31