$S=(c_1, \cdots, c_s)$, $T=(d_1, \cdots, d_s)$ は $F=(f_1, \cdots, f_s)$ の syzygy ゆえ、
$$\sum_{i=1}^s c_i \mathrm{LT}(f_i) = \sum_{i=1}^s d_i \mathrm{LT}(f_i) = 0$$.
$$\sum_{i=1}^s (c_i + d_i) \mathrm{LT}(f_i) = \sum_{i=1}^s c_i \mathrm{LT}(f_i) + \sum_{i=1}^s d_i \mathrm{LT}(f_i) = 0$$,
$$\sum_{i=1}^s (g c_i) \mathrm{LT}(f_i) = g \sum_{i=1}^s c_i \mathrm{LT}(f_i) = 0$$,
より
$S+T=(c_1 + d_1, \cdots, c_s + d_s)$, $g \cdot S = (g c_1, \cdots, g c_s)$ もまた syzygy となる。
Exercise 6.
$S_j$ が $S(G)$ の multideg $\gamma_j$ の homogeneous syzygy であるとき、$S_j \cdot G$ の multideg $< \gamma_j$ を示せ。
$G = (g_1, \cdots, g_s)$ とする。
$S_j \cdot G = \sum_{i=1}^s c_i x^{\alpha(i)} g_i$ であるが、
$$\mathrm{multideg}(S_j \cdot G) $$
$$= \mathrm{multideg}(\sum_{i=1}^s c_i x^{\alpha(i)} g_i) \leq \max_{i=1}^s \mathrm{multideg}(x^{\alpha(i)} g_i) $$
$$= \max_{i=1}^s \mathrm{multideg}(x^{\alpha(i)} \mathrm{LT}(g_i))$$
ここで等号成立は $\sum_{i=1}^s x^{\alpha(i)} \mathrm{LT}(g_i) \neq 0$ の場合であるが、
$S_j \subset S(G)$ であるから $\sum_{i=1}^s c_i x^{\alpha(i)} \mathrm{LT}(g_i) = 0$
より等号は成立しない。よって $\mathrm{multideg}(S_j \cdot G) < \max_{i=1}^s \mathrm{multideg}(x^{\alpha(i)} g_i)$ であるが、
より等号は成立しない。よって $\mathrm{multideg}(S_j \cdot G) < \max_{i=1}^s \mathrm{multideg}(x^{\alpha(i)} g_i)$ であるが、
homogeneous syzygy の定義より
$S_j = (c_1 x^{\alpha(1)}, \cdots, c_s x^{\alpha(s)})$ where $c_i \in k$ かつ $c_i \neq 0$ ならば $\alpha(i) + \mathrm{multideg}(g_i) = \gamma_j$
であるから、
$\mathrm{multideg}(S_j \cdot G) < \gamma_j$ となる。
$S_j = (c_1 x^{\alpha(1)}, \cdots, c_s x^{\alpha(s)})$ where $c_i \in k$ かつ $c_i \neq 0$ ならば $\alpha(i) + \mathrm{multideg}(g_i) = \gamma_j$
であるから、
$\mathrm{multideg}(S_j \cdot G) < \gamma_j$ となる。
Exersise 11.
元の Buchberger では除算を 17 回、syzygy を使用したものは 4 回で済んでいる。
用いたコードは https://github.com/tmiya/scala_Buchberger にあります。
元の Buchberger では除算を 17 回、syzygy を使用したものは 4 回で済んでいる。
用いたコードは https://github.com/tmiya/scala_Buchberger にあります。
// buchberger val buch_f1 = Poly(Seq( (Mono(Seq(3,0,0))(grlex), Q(1,1)), (Mono(Seq(1,1,0))(grlex), Q(-2,1)) ))(grlex) //> buch_f1 : basic.Poly = x^3 + -2xy val buch_f2 = Poly(Seq( (Mono(Seq(2,1,0))(grlex), Q(1,1)), (Mono(Seq(0,2,0))(grlex), Q(-2,1)), (Mono(Seq(1,0,0))(grlex), Q(1,1)) ))(grlex) //> buch_f2 : basic.Poly = x^2y + -2y^2 + x val buch_base1 = Poly.buchberger(Seq(buch_f1, buch_f2))(grlex) //> divmod //| divmod //| divmod //| divmod //| divmod //| divmod //| divmod //| divmod //| divmod //| divmod //| divmod //| divmod //| divmod //| divmod //| divmod //| divmod //| divmod //| buch_base1 : Seq[basic.Poly] = ArrayBuffer(x^3 + -2xy, x^2y + -2y^2 + x, - //| x^2, -2xy, -2y^2 + x) val buch_base2 = Poly.reduce(buch_base1)(grlex) //> buch_base2 : Seq[basic.Poly] = List(x^2, xy, y^2 + -1/2x) val buch2_base1 = Poly.buchberger2(Seq(buch_f1, buch_f2))(grlex) //> divmod //| divmod //| divmod //| divmod //| divmod //| buch2_base1 : Seq[basic.Poly] = ArrayBuffer(x^3 + -2xy, x^2y + -2y^2 + x, //| -x^2, -2y^2 + x, -2xy)
No comments:
Post a Comment