[BACK]Return to tr-ja.oxt CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-contrib / testing

Annotation of OpenXM/src/asir-contrib/testing/tr-ja.oxt, Revision 1.9

1.9     ! takayama    1: $Id: tr.oxt,v 1.39 2005/05/11 03:32:56 taka Exp $
        !             2: $OpenXM: OpenXM/src/asir-contrib/testing/tr-ja.oxt,v 1.8 2005/05/04 05:47:03 takayama Exp $
1.1       takayama    3:
                      4: $BCm0U(B: testing/tr.rr $B$G$O(B quote $B$r(B quotetolist $B$G(B list $B$KJQ49$7$F07$&$?$a(B,
                      5:       $B2<$N;EMM$H$O$3$H$J$j(B, list $B7?$G%G!<%?$rLa$9>l9g$bB?$$(B.
                      6:       $B%f!<%68@8l$G=q$$$F$$$k4X78>e(B pn(x) $B$r(B pn("x") $B$H$7$F$$$k(B.
                      7:       $BB>$K$bF1MM$J4X?t$,$"$j(B.
                      8:
1.5       takayama    9: $B$3$N%U%!%$%k$+$i(B texi $B%U%!%$%k$r:n@.$9$k$K$O0J2<$N$h$&$KF~NO$7$F2<$5$$(B.
                     10: oxgentexi $B$O(B OpenXM/src/util $B$N2<$K$"$j$^$9(B.
                     11:
                     12: nkf -e tr.oxt | oxgentexi --noSorting --title 'Term rewriting functions for Risa/Asir' --author 'Nobuki Takayama' >t.texi
                     13:
                     14: begin: AAA01|
                     15:
1.9     ! takayama   16: $B8=:_$N%5%s%W%k<BAu$K$O(B bug $B$,Bt;3$G$+$D(B,
        !            17: $B%5%s%W%k<BAu$O8zN($b0-$$(B.
        !            18: $B$4Cm0U(B!
        !            19:
1.5       takayama   20: @c ---------------------------------------------------------
                     21: @section $BJQ?t%Q%?!<%s$H4X?t%Q%?!<%s(B
                     22:
                     23:
                     24: $BJQ?t%Q%?!<%s(B
1.9     ! takayama   25: @itemize @bullet
        !            26: @item pn(x),             $BG$0U$N$b$N$K%^%C%A(B. $B%^%C%A$7$?$b$N$r(B x $B$K(B bind.
        !            27: @item pn(x,qt.is_integer(x)),  x $B$,(B @code{qt.is_integer(x)} $B$r$_$?$;$P%^%C%A(B.
1.5       takayama   28:
1.9     ! takayama   29: @item Todo; $B4X?t$K%^%C%A$9$k(B fn $B$OB?J,$$$i$J$$(B. qt.is_function(x) $B$G(B OK.
        !            30: @end itemize
1.5       takayama   31:
                     32: $B%Q%?!<%s$O(B quote $B$GM?$($k(B.
1.8       takayama   33: $BM=Ls8l(B  tr.and, tr.or, tr.not  $B$O%Q%?!<%s$N%^%C%A$K4X$7$FO@M}1i;;$r$*$3$J$&(B.
1.5       takayama   34: $B$?$H$($P(B
1.9     ! takayama   35: quote(tr.and(pn(x,qt.is_integer(x)),pn(x,qt.is_non_negative(x)))
1.5       takayama   36: $B$O(B x $B$,(B $B@0?t$G(B - $B$,@hF,$K$D$$$F$$$J$$>l9g%^%C%A$9$k(B.
                     37:
                     38: end:
                     39:
1.8       takayama   40: begin: AAA011|
                     41:
                     42: @c ---------------------------------------------------------
                     43: @section $B<BAu$N$?$a$NJd=u4X?t(B
                     44:
                     45: @itemize @bullet
1.9     ! takayama   46: @item @code{quotetolist}, @code{listtoquote}, @code{listtoquote_str} ;
1.8       takayama   47:    quote $B$H(B list $B$N4V$NJQ49(B.
1.9     ! takayama   48: @item @code{quote_to_funargs}, @code{funargs_to_quote}, @code{get_function_name} ;
1.8       takayama   49:   quote $B$H(B funarg $B7A<0$NJQ49(B. $B<B83E*4X?t$N%^%K%e%"%k$r;2>H(B.
1.9     ! takayama   50: @item @code{quotetoobj}, @code{eval_quote} ;
1.8       takayama   51:    quote $B$H(B object $B$N4V$NJQ49(B.
1.9     ! takayama   52: @item @code{quote_input_form}, @code{ctrl("print_quote",1)} ;
1.8       takayama   53:    quote $B$HJ8;zNs$N4V$NJQ49(B.
1.9     ! takayama   54: @item @code{quote_flatten} ;
        !            55:    $B:87k9gE*$K:n$jJQ$($k(B. $B<B83E*4X?t$N%^%K%e%"%k$r;2>H(B.
1.8       takayama   56: @end itemize
                     57:
                     58: end:
                     59:
1.5       takayama   60: begin: AAA02|
1.4       takayama   61:
1.8       takayama   62: @section quote $B$KBP$9$k4pK\4X?t(B  (module qt $B$N4X?t(B)
1.1       takayama   63:
1.5       takayama   64: end:
                     65:
                     66:
1.8       takayama   67: begin: qt.node(Q)
1.1       takayama   68:  quote $B%G!<%?(B {Q} $B$N(B node $B$r<h$j=P$9(B.
1.8       takayama   69:  example: qt.node(quote(1+2*3))
                     70:         ["b_op","+"]  ($B8=:_$N<BAu$G$O$3$l$,La$k(B)
1.4       takayama   71: end:
1.1       takayama   72:
                     73:
1.8       takayama   74: begin: qt.nchild(Q)
1.1       takayama   75:  quote $B%G!<%?(B {Q} $B$N(B $B;R6!$N?t$rLa$9(B.
1.8       takayama   76:  example: qt.nchild(quote(1+2*3))     2 $B$rLa$9(B.
1.4       takayama   77: end:
1.1       takayama   78:
                     79:
1.8       takayama   80: begin: qt.child(Q,K)
1.1       takayama   81:  quote $B%G!<%?(B {Q} $B$N(B {K} $BHVL\$N;R6!$rLa$9(B.
1.8       takayama   82:  example: qt.child(quote(1+2*3),1)     quote(2*3) $B$rLa$9(B.
                     83:  example: qt.child(quote(1+2*3),0)     quote(1) $B$rLa$9(B.
1.4       takayama   84: end:
1.1       takayama   85:
1.8       takayama   86: begin: hoge|
1.1       takayama   87: @c --------------------------------------------------------------------
1.8       takayama   88: @section quote $B$KBP$9$k=R8l(B
                     89: end:
1.1       takayama   90:
1.8       takayama   91: begin: qt.is_integer(Q)
1.1       takayama   92:  quote $B%G!<%?(B {Q} $B$,@0?t$J$i(B 1
1.8       takayama   93:  example: qt.is_integer(quote(0))
1.4       takayama   94: end:
1.1       takayama   95:
1.8       takayama   96: begin: qt.is_dependent(Q,x)
1.1       takayama   97:  quote $B%G!<%?(B {Q} $B$,ITDj85(B {x} $B$r4^$`$H(B 1, $B4^$^$J$$$H(B 0.
1.8       takayama   98:  example: qt.is_dependent(quote(1+1/x),x)
1.4       takayama   99: end:
                    100:
1.8       takayama  101: begin: qt.is_function(Q)
1.4       takayama  102:  quote $B%G!<%?(B {Q} $B$,4X?t$N$H$-(B 1, $B$=$&$G$J$$$H$-(B 0.
1.8       takayama  103:  example: qt.is_function(f(x,y));
1.4       takayama  104: end:
1.1       takayama  105:
1.8       takayama  106: begin: qt.is_minus(Q)
                    107:  quote $B%G!<%?(B {Q} $B$,7A<0E*$K(B -1 $B$h$j;O$^$k$H$-(B 1.
                    108:  example: qt.is_minus(quote(-1/x));
                    109:  ref: qt.add_paren, qt.add_paren0
                    110: end:
                    111:
                    112: begin: qt.is_rational(Q)
                    113:  quote $B%G!<%?(B {Q} $B$,7A<0E*$KM-M}?t$N;~(B 1.
                    114:  example: qt.is_rational(quote(1/2));
1.9     ! takayama  115:  example:
        !           116:    [1321] qt.is_rational(quote(1/2+4));
        !           117:    1
1.8       takayama  118:  ref: qt.cancel_number
                    119: end:
                    120:
                    121: begin: hoge2|
1.1       takayama  122: @c --------------------------------------------------------------------
1.8       takayama  123: @section quote $B$KBP$9$k%3%s%9%H%i%/%?(B
                    124: end:
1.1       takayama  125:
1.8       takayama  126: begin: qt.zero()
1.1       takayama  127:  quote 0 $B$rLa$9(B.
1.4       takayama  128: end:
1.1       takayama  129:
1.8       takayama  130: begin: qt.id(Qobj)
1.1       takayama  131:  quote object {Qobj} $B$r$=$N$^$^La$9(B.
1.4       takayama  132: end:
1.1       takayama  133:
1.8       takayama  134: begin: qt.replace(Qobj,[[x,Valuex],[y,Valuey],...])
1.1       takayama  135:    quote object {Qobj} $B$NCf$N(B x $B$r(B Valuex, y $B$r(B Valuey, ... $B$KCV$-49$($?(B
                    136:    quote object $B$rLa$9(B.
1.5       takayama  137:    description:
                    138:     $B2]Bj(B; x, y $B$OBgJ8;z$b5v$9$+(B? @var{Qobj} $B$b85!94^$^$l$F$$$kBgJ8;z$rI>2A$7$FCV$-49$($k(B
                    139:     $B4X?t$bI,MW$+(B?
                    140:
1.8       takayama  141:    example: qt.replace(quote(sin(x*@pi)), [[x,quote( (2*t+3) )]])
1.4       takayama  142: end:
1.1       takayama  143:
1.8       takayama  144:    qt.replace $B$O(B asir-contrib $B$N(B base_replace $B$H;w$?5!G=(B.
1.3       takayama  145:    quote $B$NFbIt$KBgJ8;z$G$O$8$^$kJQ?t(B($BI>2A$9$k(B)$B$,=q$1$J$$$?$a(B.
                    146:
1.8       takayama  147: begin: qt.parenthesis(Qobj)
1.1       takayama  148:    quote object {Qobj} $B$NCf$N3g8L$,B-$j$J$$$H$-$K$OJd$$(B, $BB?$$$H$-$K$O<h$j5n$C$?(B
                    149:    quote object $B$r:n$k(B.
1.3       takayama  150:    +, *, /, ^, - $BEy$K$D$$$F(B asir $B$NJ8K!$G$N1i;;;R$N6/$5$r2>Dj$9$k(B.
1.5       takayama  151:   description:
1.8       takayama  152:   $B;29M(B;
                    153:    @itemize
1.9     ! takayama  154:    @item $B$^$@<BAu$7$F$J$$(B.
1.8       takayama  155:    @item noro_simplify.rr  $B$N(B @code{noro_simplify.remove_paren()}
                    156:       $B$,$9$G$K<B8=$E$_(B?
                    157:         ($B2C$($kJ}$O$@$a$_$?$$(B)
                    158:          @code{flatten()} $B$d(B @code{quote_to_funargs()} $B$rMxMQ$7$F$kLOMM(B.
                    159:    @item $B<B83E*4X?t%^%K%e%"%k$N(B @code{quote_flatten} $B$b;2>H(B ($B$3$N4X?t$J$$(B).
                    160:    @end itemize
1.5       takayama  161:
1.4       takayama  162: end:
1.1       takayama  163:
1.8       takayama  164: begin: qt.eval(Qobj,type)
1.2       takayama  165:    Qobj $B$r(B asir $B$NB>$N(B object $B$KJQ49(B.
1.5       takayama  166:   description:
                    167:    @code{eval_quote()} $B$,$9$G$K<B8=$E$_(B.
1.8       takayama  168:    $B<BAu$7$F$J$$(B.
1.5       takayama  169:
1.4       takayama  170: end:
1.2       takayama  171:
1.8       takayama  172: begin: qt.qt(Obj)
1.2       takayama  173:    asir $B$N(B Obj $B$r(B quote $B7?$KJQ49(B.
1.5       takayama  174:    description:
1.8       takayama  175:      @code{objtoquote()} $B$,$9$G$K<B8=$E$_(B.  $B<BAu$7$F$J$$(B.
                    176:
                    177: end:
                    178:
                    179: begin: qt.cancel_number(Q)
                    180:    Quote {Q} $B$NCf$GM-M}?t$,$"$l$PDLJ,$9$k(B.
1.9     ! takayama  181:  example:
        !           182:    [1320] qt.cancel_number(quote(2/4));
        !           183:    quote(1/2)
        !           184:  changelog:
        !           185:    @itemize @bullet
        !           186:    @item 2005.05.04, the initial version. Taylor $BE83+$N78?t$N4JLs$N$?$a$K:n@=(B.
        !           187:    @end itemize
        !           188:  ref: qt.is_rational
1.8       takayama  189: end:
                    190:
                    191: begin: qt.add_paren(Q)
                    192:   +- $B$,$"$l$P(B ( ) $B$r2C$($k(B. $B$^$@(B bug $B$$$j(B.
                    193:   description: Taylor $BE83+$r7W;;$9$k$?$a$K:n$C$?(B.
                    194: end:
1.5       takayama  195:
1.8       takayama  196: begin: qt.add_paren0(Q)
1.9     ! takayama  197:   $BL5>r7o$K(B {Q} $B$r(B ({Q}) $B$K$9$k(B.
        !           198: end:
        !           199:
        !           200: begin: qt.map_arg(F,Q)
        !           201:  $B4X?t(B F $B$r(B quote $B%G!<%?(B {Q} $B$N(B $B$9$Y$F$N%N!<%I$K:F5"E*$K(B
        !           202:  apply $B$7$?(B quote $B%G!<%?$rLa$9(B.
        !           203:  example: qt.map_arg(nn,quote(sin(@pi)+2/3))
        !           204:            nn(nn(sin(nn(@pi)))+nn(nn(2)/nn(3)))
        !           205: end:
        !           206:
        !           207: begin: qt.sin_int(Q)
        !           208:   {Q} $B$,@0?t$J$i(B quote(0) $B$rLa$9(B.
        !           209:   {Q} $B$,@0?t$G$J$$$J$i(B quote(sin(Q*@@pi)) $B$rLa$9(B.
        !           210: description:
        !           211:   @itemize @bullet
        !           212:   @item $B=q$-49$(5,B'$N1&JUMQ$N4X?t(B.
        !           213:   @item tr.simp_sin (sin$B$r4^$`<0$N4JC12=$N%5%s%W%k<BAu(B)$B$d(B
        !           214:   $BNc$N%W%m%0%i%`$GMxMQ$5$l$F$$$k(B.
        !           215:   @end itemize
        !           216: changelog:
        !           217:   @itemize @bullet
        !           218:   @item  2005.04.02 $B$N=i4|HG$+$iB8:_$9$k4X?t$J$N$G;EMM$,8E$$(B. list $B$rLa$9(B.
        !           219:   @item  2005.05.08 quote $B$rLa$9$h$&$K=q$-49$($?(B. $BL>A0$b$h$/$J$$$+$b(B, $B$7$+$7(B
        !           220:          $B$H$j$"$($:$3$N$^$^(B.
        !           221:   @end itemize
        !           222: ref: tr.simp_sin
        !           223: end:
        !           224:
        !           225: begin: qt.sin_int2(Q)
        !           226: ref: qt.sin_int
        !           227: end:
        !           228:
        !           229: begin: qt0021|
        !           230: @c --------------------------------------------------------------------
        !           231: @section qt, quote $B$rJL$N$b$N$KJQ49$9$k(B.
        !           232: end:
        !           233:
        !           234: begin: qt.input_form(Q)
        !           235:  {Q} $B$rJ8;zNs$KJQ49$9$k(B.
        !           236:  {Q} $B$,%j%9%H(B, $B%Y%/%H%k(B, $B9TNs$N>l9g$K$O$=$NMWAG$rJ8;zNs$KJQ49$9$k(B.
        !           237: changelog:
        !           238:  @itemize @bullet
        !           239:  @item 2005.05.08, the initial version.
        !           240:    qt.hc_etov $B$N7k2LI=<($K(B. quote_input_form $B$O(B Q $B$,%j%9%H$N>l9gITJX(B.
        !           241:  @end itemize
        !           242: ref: quote_input_form,
        !           243:      qt.hc_etov
1.4       takayama  244: end:
1.2       takayama  245:
1.1       takayama  246:
1.8       takayama  247: begin: qt003|
                    248: @c --------------------------------------------------------------------
1.9     ! takayama  249: @section qt, quote $B$GJ,;6B?9`<0(B, $BQQ5i?t$r<B8=$9$k$?$a$NJd=u4X?t(B.
        !           250: end:
        !           251:
        !           252: begin: qt.gtlex(f,g)
        !           253: {f} $B$O(B {g} $B$h$j(B quote tree $B$N(B lex order $B$GBg$-$$(B.
        !           254: description:
        !           255:   quote tree $B$N(B lex order $B$O<!$N$h$&$K7h$a$k(B.
        !           256:   @itemize @bullet
        !           257:   @item Todo; $B$^$@<BAu$7$F$J$$(B.
        !           258: @c 4/15 $BLk(B.  $B<BAu$OL@F|9V5A$N=`Hw$N=*N;8e$+(B?
        !           259:   @item $BITDj85$OITDj85$N=g=x(B.
        !           260:   @item $BITDj85$h$j(B +, - , *, /, ^ $BEy$N(B node $B$OBg$-$$(B.
        !           261:         $B$?$H$($P(B x < power(x,2)  (power(x,2) $B$O(B x^2 $B$N0UL#(B)
        !           262:   @item $B$"$H$O:F5"E*(B. times(x,y) < power(x,y) $B$@$,(B,
        !           263:         times(x,y) $B$H(B times(p,q) $B$O(B x $B$H(B p $B$NHf3S(B,  $B$3$l$G$-$^$i$J$$$J$i(B,
        !           264:         y, q $B$NHf3S(B.
        !           265:   @end itemize
        !           266:
        !           267: end:
        !           268:
        !           269: begin: qt.dtoq(F,V)
        !           270: $BJ,;6I=8=B?9`<0(B {F} $B$r(B quote $B$KJQ49$9$k(B.
        !           271: {V} $B$OJQ?t%j%9%H(B.
        !           272: description:
        !           273:  @itemize @bullet
        !           274:  @item $BJQ?t%j%9%H$,6u$N$H$-$O(B x_1, x_2, ... $B$rMQ$$$k(B.
        !           275:  @end itemize
        !           276: example:
        !           277:   F=dp_ptod((x-y-z)^3,[x,y]);
        !           278:   qt.dtoq(F,[]);
        !           279:   quote(x_1^3+(-3)*x_1^2*x_2+3*x_1*x_2^2+(-1)*x_2^3+(-3*z)*x_1^2
        !           280:        +6*z*x_1*x_2+(-3*z)*x_2^2+3*z^2*x_1+(-3*z^2)*x_2+(-z^3))
        !           281: changelog:
        !           282:  @itemize @bullet
        !           283:  @item 2005/4/21,  the initial version.
        !           284:  @end itemize
        !           285: ref: qt.qtod
        !           286: end:
        !           287:
        !           288: begin: qt.qtod(F,V)
        !           289: quote {F} $B$r(B $BJ,;6I=8=B?9`<0$KJQ49$9$k(B.
        !           290: {V} $B$OJQ?t%j%9%H(B.
        !           291: description:
        !           292:  @itemize @bullet
        !           293:  @item $BJQ?t%j%9%H$,6u$N$H$-$O(B x_1, x_2, ... $B$rMQ$$$k(B.
        !           294:  @item $B$^$@<BAu$7$F$J$$(B.
        !           295:  @end itemize
        !           296: ref: qt.qtod
1.8       takayama  297: end:
                    298:
1.9     ! takayama  299:
1.8       takayama  300: begin: qt.vars(Q)
                    301:  {Q} $B$K8=$l$kJQ?t$rLa$9(B.
                    302:  description: @code{vars(Obj)} $B$N(B qt $BHG(B.
                    303:  example:
                    304:   [2306] qt.vars(objtoquote((x-y-1)^4/z+y^q));
                    305:   [x,y,z,q]
                    306: end:
                    307:
                    308: begin: qt.etov_pair(Q)
                    309:  {Q} $B$K(B p^q $B$N7A$N85$rC5$7$F(B [p,q] $B$r%j%9%H$K$7$FLa$9(B.
                    310:  description:
                    311:    @itemize  @bullet
1.9     ! takayama  312:    @item $B$3$N4X?t$OLZ9=B$$NCf$N(B p^q $B$N7A$N85$r$9$Y$FC5:w$9$k(B.
        !           313:    @end itemize
1.8       takayama  314:  example:
                    315: [2410] ctrl("print_quote",1);
                    316: 1
                    317: [2411]  qt.etov_pair(quote(3*x^4*y^(-3)));
                    318: [[[internal,y],[u_op,(),[u_op,-,[internal,3]]]],[[internal,x],[internal,4]]]
1.9     ! takayama  319:  changelog:
        !           320:   @itemize @bullet
        !           321:   @item 2005.05.04, dp_etov $B$K;w$?4X?t$r(B qt $B$G:n$k$?$a$N=`Hw(B.
        !           322:   @end itemize
        !           323:  ref: qt.vars
        !           324: end:
        !           325:
        !           326: begin: qt.hm(Q)
        !           327:  {Q} $B$NF,9`$rLa$9(B.
        !           328:  example:
        !           329:     [1314] Q=qt.dtoq(-4/3*<<1,4,5>>,[x,y,z]);
        !           330:     quote((-4/3)*x*y^4*z^5)
        !           331:     [1315] qt.hm(Q);
        !           332:     quote((-4/3))
        !           333:     [1316] qt.hop(Q);
        !           334:     *
        !           335:     [1317] QQ=qt.rest(Q);
        !           336:     quote(x*y^4*z^5)
        !           337:     [1318] qt.hm(QQ);
        !           338:     quote(x)
        !           339:     [1319] qt.rest(QQ);
        !           340:     quote(y^4*z^5)
        !           341:     [1320] qt.hm(qt.rest(QQ));
        !           342:     quote(y^4)
        !           343:  ref: qt.rest, qt.hop
        !           344: end:
        !           345:
        !           346: begin: qt.rest(Q)
        !           347:   {Q}$B$,(B a+b+c+... $B$N;~(B b+c+...$B$rLa$9(B. dp_rest $B$N$^$M(B.
        !           348:   description:
        !           349:   @itemize @bullet
        !           350:   @item I_BOP $B$N;~$KBh#20z?t$r(B flatten_quote $B$7$F$+$iLa$9(B.
        !           351:   @end itemize
        !           352:   example:
        !           353:     [1667] load("taka_series.rr")$
        !           354:     [1668] Q=tkseries.expand1(cos(x),x,0,5);
        !           355:      quote(1+(-1/2)*x^2+1/24*x^4+oO(x, 6))
        !           356:     [1769] qt.hm(qt.rest(Q));
        !           357:       quote((-1/2)*x^2)
        !           358:     [1770] QQ=qt.rest(Q);
        !           359:       quote((-1/2)*x^2+1/24*x^4+oO(x, 6))
        !           360:   changelog:
        !           361:   @itemize @bullet
        !           362:   @item 2005.05.04, tkseries.expand $B$N7k2L$KBP$7$F(B,
        !           363:               $BKh2s(B flatten_quote $B$r$d$i$J$$$H:87k9gE*$K$J$i$J$$$N$O2?8N$+(B?
        !           364:               BUG $B0BDjE*$KF0:n$9$k$+$I$&$+IT0B(B.
        !           365:   @item 2005.05.04, $B$$$h$$$h(B $B78?t$H(B exponet $B%Y%/%H%k$N<h$j=P$7$r=q$/=`Hw$,40N;(B.
        !           366:   @item 2005.05.05, Q=a*b $B$J$i(B qt.rest(Q) = b $B$H$J$k$h$&$KJQ99(B.
        !           367:             $B78?t$N<h$j=P$7(B, exponent $B%Y%/%H%k$N<h$j=P$7$K$O$3$l$,JXMx(B.
        !           368:   @end itemize
        !           369:   ref: qt.hm, qt.hop, qt.dtoq, dp_hm, dp_rest
        !           370: end:
        !           371:
        !           372: begin: qt.hop(Q)
        !           373:   {Q} $B$NF,@a$,(B binary operator (I_BOP) $B$N;~(B binary operator $B$NL>A0$rLa$9(B.
        !           374:   changelog:
        !           375:   @itemize @bullet
        !           376:   @item 2005.05.05, $B;O$a$F$NHG(B.
        !           377:   @end itemize
1.8       takayama  378: end:
                    379:
1.9     ! takayama  380: begin: hc_etov(Q,V)
        !           381:   quote {Q} $B$rJQ?t%j%9%H(B {V} $B$N%b%N%_%"%k$H$_$F(B, hc (leading coefficient)
        !           382:   $B$H(B exponet $B%Y%/%H%k$r(B quote $B7?$GLa$9(B.
        !           383:  description:
        !           384:   Q = hc*p1*p2* ... $B$J$k7A$r2>Dj(B. $B$3$l0J30$N7A$G$OF0:nJ]>Z$J$7(B.
        !           385:  example:
        !           386:   [1967] R=qt.hc_etov(quote(-3/2*x*z^3),[x,y,z]);
        !           387:   [<...quoted...>,[ <...quoted...> 0 <...quoted...> ]]
        !           388:   [1968] qt.input_form(R);
        !           389:   [quote(1*(-1)*3/2),[ quote(1) 0 quote(3) ]]
        !           390:  changelog:
        !           391:   @itemize @bullet
        !           392:   @item 2005.05.05,
        !           393:     qt.hc_etov(quote(-3/2*x*z^3),[x,y,z]);  $B$G%F%9%H$9$k$b$^$@F0:n$X$s(B.
        !           394:   @item if (A[0] == I_MINUS) $B$NItJ,$r$D$1$F2r7h(B. 05 $BLk(B.
        !           395:         $B$^$@(B bug $B$,;D$k$+$b$7$l$:(B.
        !           396:   @item Todo; qtodl (distributed poly in quote $B$r(B list $B7A<0$G(B).
        !           397:   @item Todo; quote $B$N(B distributed poly $B$NHf3S(B.
        !           398:   @item Todo; $BB?JQ?t$N%F%$%i!<E83+(B. $B%F%$%i!<E83+$N@Q(B.
        !           399:   @item Todo; Asir $B%I%j%k$N(B 10 $B9T(B Buchberger $B%"%k%4%j%:%`$N<BAu$r$3$3$G(B
        !           400:    $BDj5A$7$?(B quote $B4X?t$G=q$/(B.
        !           401:   @end itemize
        !           402: end:
        !           403:
        !           404:
1.5       takayama  405: begin: tr|
                    406:
1.1       takayama  407: @c --------------------------------------------------------------------
1.8       takayama  408: @section tr (term rewriting) $B$N%H%C%W%l%Y%k$N4X?t(B (module tr $B$N4X?t(B)
1.1       takayama  409:
1.5       takayama  410: end:
                    411:
1.8       takayama  412: begin: tr.match0(Qobj,P)
1.1       takayama  413:  quote $B%G!<%?(B {Qobj} $B$,(B $B%Q%?!<%s(B {P} $B$KE,9g$9$l$P(B 1 $B$rLa$7(B, $B$=$&$G$J$1$l$P(B 0
                    414:  $B$rLa$9(B.
1.8       takayama  415:  example: tr.match0(quote(1+2*3),quote(pn(x)+pn(y)))
1.3       takayama  416:                  x $B$K(B quote(1), y $B$K(B quote(2*3)
1.9     ! takayama  417:           tr.match0(quote(1+2*3),quote(pn(x)+pn(y,qt.is_integer(y))));
        !           418:                  qt.is_integer(quote(2*3)) $B$O(B 0 $B$J$N$G(B y $B$K$O%^%C%A$7$J$$(B.
        !           419:  example:
        !           420:   [2991]   tr.match0(quote(1),quote(pn(c,qt.is_dependent(c,x))));
        !           421:   0
        !           422:   [2992]   tr.match0(quote(x^3+1),quote(pn(c,qt.is_dependent(c,x))));
        !           423:   1
1.4       takayama  424: end:
1.1       takayama  425:
1.4       takayama  426: begin: pn(X)
                    427:   pn(x) $B$OG$0U$N(B quote object $B$K%^%C%A$7(B, $BL>A0(B x $B$r$D$1$k(B.
1.9     ! takayama  428:   quote $B$NCf$G;H$&FCJL$J4X?t5-9f(B.
        !           429:   pn $B$O(B variable PatterN ($BJQ?t%Q%?!<%s(B)$B$NN,(B.
1.4       takayama  430: description:
1.8       takayama  431:   tr.match0(quote(1+2*3),quote(pn(x)+pn(y)))  $B$O(B 1 $B$rLa$9$,(B,
1.9     ! takayama  432:   tr.match0(quote(1+2*3),quote(pn(x)+pn(y,tr.is_integer(y)))) $B$O(B 0 $B$r$b$I$9(B.
1.8       takayama  433:   2*3 $B$O(B integer $B$+$i:n$i$l$?(B fnode $B$G$O$"$k$,(B integer $B$G$O$J$$$N$G(B qt.is_integer
1.4       takayama  434:   $B$,(B 0 $B$rLa$9$?$a(B.
                    435: end:
1.1       takayama  436:
                    437:
1.8       takayama  438: begin: tr.apply_rule1(Qobj,P,Act)
1.1       takayama  439:  quote $B%G!<%?(B {Qobj} $B$NLZ$rI}M%@hC5:w$7(B,
                    440:  $B%Q%?!<%s(B {P} $B$KE,9g$9$k$b$N$,$"$k$H$-$O(B {Act} $B$r8F$S=P$7$=$NCM$rLa$9(B.
                    441:  $B$D$^$j(B top node $B$,(B {P} $B$KE,9g$9$k$+D4$Y(B, $BE,9g$7$J$$>l9g$O$=$N;R6!$K(B
1.8       takayama  442:   tr.apply_rule1 $B$rE,MQ$9$k(B ($B$3$3$,(B tr.match_act $B$H$O0[$J$k(B).
1.1       takayama  443:  $B%^%C%A$7$J$$>l9g$O(B Qobj $B$r$=$N$^$^La$9(B ($B$3$l$,:F5"E*$KE,MQ$5$l$k(B).
                    444:
1.4       takayama  445: description:
1.9     ! takayama  446:  $B$3$3$G(B qt.sin_int(X) $B$O(B X $B$,(B integer $B$N;~$O(B quote(0) $B$rLa$7(B,
1.5       takayama  447:  $B$=$&$G$J$$$H$-$O(B quote(sin(X*@@pi)) $B$rLa$9(B.
1.9     ! takayama  448:  $B?<$5M%@h$G=q$-49$($r$9$k$K$O(B $B4X?t(B qt.sin_int $B$NCf$G$^$?(B
        !           449:  tr.apply_rule1 $B$r8F$S=P$;$P$h$$(B.
        !           450:
        !           451:  example:
        !           452:    [2215] tr.apply_rule1(quote(1+sin(2*@pi)),quote(sin(pn(x)*@pi)),
        !           453:             ["qt.sin_int",x]);
1.1       takayama  454:
1.9     ! takayama  455:     quote(1+0)
1.4       takayama  456: end:
                    457:
                    458:
1.8       takayama  459: begin: tr.apply_or_rules(Qobj,Rules)
                    460:  quote $B%G!<%?(B {Qobj} $B$NLZ$rI}M%@hC5:w$7(B,
                    461:  $B%k!<%k(B {Rules} $B$KE,9g$9$k$b$N$,$"$k$H$-$O%k!<%k$K5-=R$5$l$?(B action $B$r(B
                    462:  $B8F$S=P$9(B. {Rules} $B$K$OJ#?t$N%k!<%k$r=q$/$3$H$,0l$D$G$bE,MQ2DG=$J%k!<%k$,(B
                    463:  $B$"$l$P:F5"E*$K8F$S=P$5$l$k(B.
                    464:
1.4       takayama  465: end:
1.1       takayama  466:
1.8       takayama  467: begin: hoge4|
                    468: @section tr $BFbIt4X?t(B
                    469: end:
1.2       takayama  470:
1.8       takayama  471: begin: tr.apply_function0(Qobj,BindingTable)
1.4       takayama  472: end:
1.2       takayama  473:
1.8       takayama  474: begin: tr.rp(Qobj,P,A)
1.4       takayama  475: end:
1.2       takayama  476:
1.8       takayama  477: begin: tr.make_binding(Qobj,P)
1.4       takayama  478: end:
1.2       takayama  479:
1.9     ! takayama  480: begin: hoge41|
        !           481: @section tr $B4JC12=4X?t$N%5%s%W%k<BAu(B
        !           482:
        !           483: @itemize @bullet
        !           484: @item 2005.05.08 $B4JC12=4X?t$OCm0U?<$/<BAu$7$J$$$H(B, $BL58B%k!<%W$K$*$A$$$C$?$j(B,
        !           485: $B4JC12=$N$d$j$N$3$7$,$G$?$j$9$k(B.
        !           486: $B$H$j$"$($:$^$H$a$F$*$/$,(B, $B$3$l$i$N<BAu$O$^$@$^$@$G$"$k(B.
        !           487: @end itemize
        !           488:
        !           489: end:
        !           490:
        !           491: begin: tr.simp_zero(Q)
        !           492:  $B<0(B {Q} $B$NCf$+$i(B 0 $B$d(B 1 $B$r$1$9(B. $B$?$H$($P(B 1*x $B$O(B x $B$X(B. 0*1 $B$O(B 0 $B$X(B.
        !           493:  x+0 $B$O(B 0 $B$X(B.
        !           494: changelog:
        !           495:  @itemize @bullet
        !           496:  @item 2005.04 $B$N$*$o$j$K(B initial version? tkseries.expand1 $BMQ(B.
        !           497:  @end itemize
        !           498: end:
        !           499:
        !           500: begin: tr.simp_unary(Q)
        !           501:  "-"$B$r>C$9$h$&$K$9$k(B. $B$?$H$($P(B +-x $B$O(B -x $B$X(B. -(-x) $B$O(B x $B$X(B.
        !           502: changelog:
        !           503:  @itemize @bullet
        !           504:  @item 2005.04 $B$N$*$o$j$K(B initial version? tkseries.expand1 $BMQ(B.
        !           505:  @end itemize
        !           506: end:
        !           507:
        !           508: begin: tr.simp_sin(Q)
        !           509:   $B<0(B {Q} $B$NCf$N(B sin($B@0?t(B @@pi) $B$r(B 0 $B$K$9$k(B.
        !           510: example:
        !           511:  [2217] tr.simp_sin(quote(sin(2*@pi)+sin(@pi/2)));
        !           512:  quote(sin(@pi()/2))
        !           513: changelog:
        !           514:  @itemize @bullet
        !           515:  @item 2005.04 $B$N$*$o$j$K(B initial version? tkseries.expand1 $BMQ(B.
        !           516:  @item 2005.05.08 tr.simp_sin(quote(sin(2*sin((1/2)*@@pi)))); $B$OL58B%k!<%W(B bug.
        !           517:       $B$^$@D>$7$F$J$$(B.
        !           518:  @end itemize
        !           519: end:
1.1       takayama  520:
1.5       takayama  521: begin: zzz00|
1.4       takayama  522:
1.5       takayama  523: @section $BNcBj(B
1.1       takayama  524:
1.4       takayama  525: end:
1.1       takayama  526:
1.5       takayama  527: begin: zzz01|
                    528: $BNcBj(B  sin($B@0?t(B*@@pi) $B$r(B 0 $B$K(B.
1.4       takayama  529: example:
1.2       takayama  530:    /* $B=`Hw(B */
                    531:    extern P,A;
                    532:    P=quote(sin(pn(x)*@pi));  /* $B%Q%?!<%s(B */
1.9     ! takayama  533:    A=["sin_int",x];          /* action, action $B4X?t(B */
1.2       takayama  534:    def sin_int(X) {
1.8       takayama  535:      X = tr.apply_rule1(X,P,A); /* $B;R6!$K(B [P,A] $B$r:F5"E*$KE,MQ(B */
                    536:      if (qt.is_integer(X)) return qt.zero();
1.9     ! takayama  537:      else qt.replace(quote(sin(y*@pi)),[[y,X]]);
        !           538:        /* sin(x*@pi) $B$r$=$N$^$^La$9(B.*/
1.2       takayama  539:    }
                    540:
                    541:    /* $B7W;;(B */
                    542:    Qobj=quote(1+sin(sin(2*@pi)*@pi)*sin((1/2)*@pi));
1.8       takayama  543:    tr.apply_rule1(Qobj,P,A);
1.9     ! takayama  544: example_description:
        !           545:   $B%U%!%$%k$K%;!<%V$7$F<B9T$N$3$H(B.  @code{Debug=1;} $B$H$9$k$HJQ7A$NMM;R$,$o$+$k(B.
1.4       takayama  546: end:
1.2       takayama  547:
1.4       takayama  548: @c ------------------------------------------------------
                    549: @section $BNcBj(B Mathematica $B$N(B N[ ] $BAjEv$N4X?t$r%f!<%6$,=q$1$k$h$&$K(B.
                    550:
1.5       takayama  551: begin: zzz02|
1.4       takayama  552: $BNcBj(B Mathematica $B$N(B N[ ] $BAjEv$N4X?t$r%f!<%6$,=q$1$k$h$&$K(B.
                    553: example:
                    554:     nn(sin(cos(@pi)+sqrt(2)))
                    555:     --> nn(sin(nn(cos(nn(@pi)))+nn(sqrt(nn(2)))))
                    556:    Prog; test1-tr.rr $B$N(B test4().
                    557:
1.8       takayama  558:   qt.map_arg $B4X?t$rMQ$$$k(B.
1.4       takayama  559:   def test4() {
1.8       takayama  560:     Rule=[quote(nn(pn(f))),["qt.map_arg",nn,f]];
1.4       takayama  561:     /* nn $B$G0O$^$l$?$b$N$,$"$l$P(B, nn $B$r$=$NFbIt$K:F5"E*$K(B apply $B$9$k(B */
                    562:     R0 = quote(nn(sin(1/2)*cos(1/3)));
                    563:     print(print_input_form(R0));
1.8       takayama  564:     R=tr.apply_rule1(R0,Rule[0],Rule[1]);
1.4       takayama  565:     return R;
                    566:   }
                    567:
                    568: end:
1.1       takayama  569:
                    570: @c ---------------------------------------------------------
                    571: @section $BNcBj(B  $BITDj@QJ,(B
                    572:
1.5       takayama  573: begin: zzz03|
1.4       takayama  574: $BNcBj(B  $BITDj@QJ,(B
                    575: example:
1.2       takayama  576:    /* integral(f+g) => integral(f)+integral(g) */
                    577:    S1=[quote(integral(pn(f)+pn(g))),
                    578:        [int_linear1,f,g]];
                    579:    def int_linear1(X,Y) {
1.8       takayama  580:       return qt.replace(quote(integral(f)+integral(g)),[[f,X],[g,Y]]);
1.2       takayama  581:    }
                    582:
                    583:    /* integral(c*f) => c*integral(f) */
1.9     ! takayama  584:    def is_independent(F,X) { return !qt.is_dependent(F,X); }
        !           585:    S2=[quote(integral(pn(c,is_independent(c,x))*f)),
1.2       takayama  586:        [int_linear2,c,f]];
                    587:    def int_linear2(X,Y) {
1.8       takayama  588:       return qt.replace(quote(c*integral(f)),[[c,X],[f,Y]]);
1.2       takayama  589:    }
                    590:
1.9     ! takayama  591:    tr.apply_or_rules(quote(integral(a*x^2+x+2/x)),[S1,S2]);
1.2       takayama  592:    $B$3$l$r$3$l0J>e=q$-49$($,5/$-$J$$$^$G7+$jJV$9(B.
                    593:    $B$3$N%k!<%k$N>l9gEz$($O(B
                    594:    a*integral(x^2)+integral(x)+integral(2/x);
                    595:
                    596:    quote(integral(x^pn(n))) --> x^(n+1)/(n+1) or log(x) $B$r=q$/(B.
1.9     ! takayama  597: example:
        !           598:  tr.match0(quote(c*x),quote(pn(c,is_independent(c,x))*f));
        !           599: example_description:
        !           600:  2005.05.08, Todo; Bug. $B$3$NNc$,@5$7$/F0$$$F$/$l$J$$(B.
        !           601:
1.4       takayama  602: end:
1.2       takayama  603:
1.1       takayama  604: @c ---------------------------------------------------------
                    605: @section $BNcBj(B  $B4JC1$J9=J82r@O(B
                    606:
1.5       takayama  607: begin: zzz04|sortKey: zzz04
                    608: description:
1.9     ! takayama  609: ---------------------  5/8 $B$3$3$^$G=$@5(B. ----------------------
1.5       takayama  610:
1.4       takayama  611: $BNcBj(B  $B4JC1$J9=J82r@O(B
1.5       takayama  612:
1.4       takayama  613: example:
1.9     ! takayama  614:    todo; $B$3$NNc$O$^$@%A%'%C%/$7$F$J$$(B.
1.2       takayama  615:    $B<0(B(expression) $B$O(B $B<0(B+$B<0(B | $B<0(B*$B<0(B | ($B<0(B) | $B@0?t(B
                    616:
                    617:    extern R1,R2,R3,R4,S1,S2,S3,S4;
                    618:    /* $BJ8K!$rK~$?$9$+$I$&$+$N(B check $BMQ(B. Action $BIt$O(B 1 $B$+(B 0 */
                    619:    R1=[quote(pn(x,is_expression(x))+pn(y,is_expression(y))), 1];
                    620:    R2=[quote(pn(x,is_expression(x))*pn(y,is_expression(y))), 1];
                    621:    R3=[quote((pn(x,is_expression(x)))), 1];
1.8       takayama  622:    R4=[quote(pn(x,qt.is_integer(x))), 1];
1.2       takayama  623:    def is_expression(Qobj) {
                    624:      R = [R1,R2,R3,R4];
                    625:      A = apply_or_match0(Qobj,R);
                    626:      if (A == 0) return 0; else return 1;
                    627:    }
                    628:
                    629:    /* $B7W;;MQ(B. R1,R2,R3,R4 $B$H:8$O6&DL(B. */
                    630:    S1=[quote(pn(x,is_expression(x))+pn(y,is_expression(y))), [myadd,x,y]];
                    631:    S2=[quote(pn(x,is_expression(x))*pn(y,is_expression(y))), [mymul,x,y]];
1.8       takayama  632:    S3=[quote((pn(x,is_expression(x)))), ["qt.id",x]];
                    633:    S4=[quote(pn(x,qt.is_integer(x))), ["qt.id",x]];
1.2       takayama  634:
                    635:    def eval_expression(Qobj) {
                    636:      S = [S1,S2,S3,S4];
                    637:      return apply_or_rules(Qobj,S);
                    638:    }
                    639:
                    640:    def myadd(X,Y) {
1.8       takayama  641:      return qt.qt(qt.eval(X,1)+qt.eval(Y,1));
1.2       takayama  642:    }
                    643:
                    644:    def mymul(X,Y) {
1.8       takayama  645:      return qt.qt(qt.eval(X,1)*qt.eval(Y,1));
1.2       takayama  646:    }
                    647:
                    648:    /* $B7W;;(B */
1.8       takayama  649:    tr.eval_expression(quote(1+2*(3+15)));
1.4       takayama  650: end:
1.1       takayama  651:
1.5       takayama  652: begin: misc|
                    653:
                    654: @section $B9M$(J}$K$D$$$F$N35@b(B
                    655:
                    656:  $B%H%C%W%l%Y%k$N4X?tC#(B.  (stylesheet $B$N9M$($K;w$F$k(B.)
                    657:
                    658:   iterator $B$N0l<o(B.
                    659:
                    660:   yacc $B$K;w$F$k(B.
                    661:
                    662: @section $B%G%P%C%,!<(B
                    663:
                    664:   $BA*Br$9$Y$-%k!<%k$,Bt;3$"$k$H$-$O(B, $B7Y9p$9$k5!G=(B.
                    665:
                    666:   $BL58B%k!<%W$N(B|$B8!=P(B.
                    667:
                    668: end:
                    669:
1.9     ! takayama  670: begin: hoge001|
        !           671: @section Talor $BE83+(B (taka_series.rr $B$N2r@b(B)
        !           672:
        !           673: end:
        !           674:
        !           675: begin: tkseries.expand1(Q,X,A,N)
        !           676: {Q} $B$r(B $BJQ?t(B {X} $B$K4X$7$F(B, {X}={A} $B$N6aK5$G(B {N} $B<!$^$G(B
        !           677: Taylor $BE83+$9$k(B.
        !           678:
        !           679: description:
        !           680: @itemize @bullet
        !           681: @item qt $B%Q%C%1!<%8$H(B tr $B%Q%C%1!<%8$NNcBj$H$7$F=q$$$F$$$k(B.
        !           682: @item Bug $B$@$i$1$G$9(B.
        !           683: @item Todo; $BB?JQ?t$N(B Taylor $BE83+(B.
        !           684: @end itemize
        !           685:
        !           686: example:
        !           687: [1258] load("tr.rr");
        !           688: 1
        !           689: [1359] load("taka_series.rr");
        !           690: 1
        !           691: [1373] tkseries.expand1(cos(x),x,0,6);
        !           692: quote(1+(-1/2)*x^2+1/24*x^4+(-1/720)*x^6+oO(x, 7))
        !           693: example_description:
        !           694:  cos $B$NCM$N7W;;$K(B tr.simp_sin $B$rMQ$$$F$$$k(B.
        !           695:  Bug; $B$3$N4X?t$OIT40A4$J$N$G(B, $B78?t$N7W;;$O$&$^$/9T$+$J$$>l9g$bB?$$(B.
        !           696:
        !           697: example:
        !           698: [1374] tkseries.expand1(quote(f(x)),x,0,3);
        !           699: quote(f(0)+calc_diff(f(0), 0)/1*x^1
        !           700:   +calc_diff(calc_diff(f(0), 0), 0)/2*x^2
        !           701:   +calc_diff(calc_diff(calc_diff(f(0), 0), 0), 0)/6*x^3+oO(x, 4))
        !           702: example_description:
        !           703:  Todo; f $B$NHyJ,$K(B 0$B$rBeF~$7$?$b$N$O(B f(0), f_1(0),  f_2(0), ...
        !           704:   ($B$=$l$>$l(B f(0), f'(0), f''(0), ... $B$N0UL#(B)
        !           705:  $B$H$7$?J}$,$$$$$@$m$&(B.
        !           706:
        !           707: changelog:
        !           708: @itemize @bullet
        !           709: @item 2005.04 $B$O$8$a$F$NHG(B.
        !           710: @end itemize
        !           711:
        !           712: end:
        !           713:
        !           714: begin: hoge002|
        !           715:
        !           716: @section $B5-9fHyJ,(B (taka_qtdiff.rr $B$N2r@b(B)
        !           717:
        !           718: $B$^$@<BAu$7$F$J$$(B.
        !           719:
        !           720: end:
        !           721:
1.5       takayama  722: begin: exp|
                    723:
                    724: @c ------------------------------------------------
                    725: @section $B<B83E*4X?t(B
                    726:
                    727: end:
                    728:
                    729:
                    730: begin: todo|
                    731:
                    732: @section  Todo
                    733:
                    734: @subsection $B%f!<%6Dj5A$NCfCV1i;;;R(B
                    735:
                    736:    tfb $B$N=q$-J}$rF3F~(B.
1.1       takayama  737:
1.5       takayama  738: @subsection $B?t3X$h$j$NNcBj(B
1.1       takayama  739:
1.5       takayama  740: $B?t3XE*$K$*$b$7$m$$NcBj$r$J$k$Y$/Bt;3MQ0U$9$k(B.
                    741: $B$3$l$i$NNcBj$KBP$7$F(B tr $B$,;n:nIJ$r:n$k$N$KM-8z$G$"$k$H$$$&$3$H$r$$$&(B.
1.1       takayama  742:
1.5       takayama  743:  $BNc(B; gcd $B7W;;$NB?9`<0(B reduction $B$r(B tr $B$G<B8=(B.
1.3       takayama  744:
1.4       takayama  745:  $BNc(B; $BQQ5i?t$N7W;;$r(B quote $B$G<B8=(B.
1.3       takayama  746:         sort $B$d(B expand $B$OAH$_9~$_$G(B.
                    747:
1.4       takayama  748:  $BNc(B; Mathematica $B$N(B Expand[], Toghether[] $BAjEv$N$b$N(B.
1.3       takayama  749:
1.4       takayama  750:  $BNc(B; D $B$N3]$1;;$r(B $B%Q%?!<%s%^%C%A$G<B8=(B.
1.5       takayama  751:     holonomic $B4X?t$r78?t$H$9$kHyJ,:nMQAG4D$G$N7W;;(B.
1.3       takayama  752:
1.4       takayama  753:  $BNc(B; (x^(1/n))^n --> x $BEy(B.
1.3       takayama  754:
1.4       takayama  755:  $BNc(B; $B5-9fHyJ,$HHyJ,4D$G$N7W;;(B.
                    756:        y''+xy=0,  y''=y^2+x $BEy(B.  index $BIU$-$NJQ?t@8@.$,I,MW(B. idxtov
1.3       takayama  757:
1.4       takayama  758:  $BNc(B; QE, $BO@M}<0(B.
1.3       takayama  759:
1.5       takayama  760:  $BNc(B; $B30@QBe?t(B.
                    761:
                    762:  $BNc(B; $B4dGH(B, $B1~MQ?t3X(B, $B?@J]$N%=%j%H%s$NK\$K$"$k$h$&$J(B fermion $BEy$NNc(B.
1.3       takayama  763:
                    764:
1.5       takayama  765:  $BNc(B;
                    766:    Bergman, George M.
                    767:    The diamond lemma for ring theory.
                    768:    Advances in Math. 29 (1978), no. 2, 178--218.
                    769:    $B$K$"$k$h$&$JHs2D49Be?t$NNc(B.
1.4       takayama  770:
                    771: end:
                    772:
1.5       takayama  773: begin: new-functions|
                    774:
1.3       takayama  775: @section   $B$^$@%9%1%C%A$N$_$N4X?t;EMM(B
                    776:
1.8       takayama  777:   qt.ltor, qt.rtol ; $BLZ$N9=B$$NJQ49(B; $BNc(B (x*y)*z --> x*(y*z)
1.5       takayama  778:
1.6       takayama  779: end:
                    780:
                    781: begin: idx|
1.5       takayama  782:
                    783: @subsection Index $B$D$-JQ?t(B
1.3       takayama  784:
1.6       takayama  785: end:
                    786:
                    787: begin: idxtov(X,I)
                    788:   idxtov({X},{I}) $B$OJQ?t(B {X}_{I} $B$rLa$9(B.
                    789:   {I} $B$O%9%+%i!<$+%j%9%H(B.
                    790:  example:
                    791:   idxtov(x,i)  $B$O(B x_i $B$rLa$9(B.
                    792:  description:
                    793:   idxtov(x,[i,j])  $B$O(B x_i_j $B$r@8@.(B.  x_i_i $B$N(B index (idx) $BB0@-(B $B$r(B [i,j] $B$K(B.
                    794:
                    795:   @code{util_v()} $B$H$[$\F1$8(B.
                    796:
                    797:   x_i $B$N(B index (idx) $BB0@-(B $B$r(B i $B$K(B.
                    798:   base_name $BB0@-$r(B  x $B$K(B.
                    799:   $BITDj85$NB0@-$rMxMQ$9$k$3$H$K$h$j9bB.$K(B index $B$r$H$j$@$;$F(B index $B$D$-JQ?t$N(B
                    800:   $BBe$j$,$G$-$k(B.
                    801:
                    802: end:
                    803:
                    804: begin: vtoidx(X)
                    805:   vtoidx(x_i) $B$O(B [x,i] $B$rLa$9(B.
                    806: description:
                    807:   @code{util_index()} $B$H$[$\F1MM(B.
                    808:
                    809:  $BB0@-$N8!:w$J$N$G9bB.(B. idx $BB0@-$,L5$$>l9g$O(B i $B$r@_Dj(B.
1.3       takayama  810:
1.6       takayama  811:   idxtov $B4X?t$O(B $B4X?tL>$K$b;H$($k$h$&$K$9$k(B? --> $BHyJ,4DBP1~(B.
1.3       takayama  812:
1.8       takayama  813:   qt.function($BL>A0(B, $B0z?t(B) --> quote($BL>A0(B($B0z?t(B)) $B$r@8@.(B.
1.3       takayama  814:    index $BIU$-4X?t$OHyJ,4D$N<h07$KI,MW(B.
1.6       takayama  815: end:
                    816:
                    817: begin: powerSeries|
1.3       takayama  818:
1.5       takayama  819: @subsection $BQQ5i?t(B, dp $B$N(B pretty print.
                    820:
1.3       takayama  821:   $B6R5i?t$N<h07(B, dp $B$N(B pretty print $B$N$?$a(B.
1.8       takayama  822:   qt.qttodp(Qobj | vlist,  order?)  quote $B$+$i(B dp $B$r:n$k(B.
1.9     ! takayama  823:    exponent $B$,?t$G$J$$$H:n$l$:(B.
1.1       takayama  824:
1.8       takayama  825:   qt.expand, qt.sort, qt.ht, qt.rest, qt.mtov $B$b4pAC4X?t$H$7$FM_$7$$(B.
1.5       takayama  826:
                    827: end:
1.1       takayama  828:
1.9     ! takayama  829: begin: monomialSimplifier00|
        !           830:
        !           831: @section $B%b%N%_%"%k$rI8=`7A$X(B (builtin$B$G(B? Monomial $B$N(B simplifier)
1.6       takayama  832:
1.9     ! takayama  833: changelog;
        !           834: @quotation
        !           835: Monomial simplifier $B$rDL$7$F$+$i(B,
        !           836: $B%Q%?!<%s%^%C%A$r$7$J$$$H>l9g$o$1$,B?$9$.$k(B.
        !           837: $B$3$l$OI,?\$@$m$&(B.
        !           838: @end quotation
1.6       takayama  839:
1.9     ! takayama  840: Example;
        !           841: @example
1.6       takayama  842:   x^1 --> x
                    843:   (x*y)*(z*t) --> x*y*z*t
                    844:   x*2*y*4     --> 8*x*y      ($B;XDj$7$?JQ?t0J30$O2D49$H$9$k(B)
                    845:   x*x^3       --> x^4
                    846:   x*(-y)*z    --> -x*y*z
                    847:   ((x))       --> x   $B$3$l$O(B noro_simplify.rr noro_simplify.remove_paren() $B$,BP1~(B
1.9     ! takayama  848: @end example
1.7       takayama  849:
                    850: end:
                    851:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>