5(682Ú; .{qê2cÓê2KÜê2êKÚ º?
Ú;ðöõ.Ü%£. 2R'/5(682Ú; .{qèêR4$ ª%2 3R'/LL+Ë&z8ILKc
ÓêRCK3>2 4R'/Ú; 2KJ@.KÜê+$4&÷9K3 5R'/4$ .¡ *2K
J@+ËK®¨¿*KÜ+$4&>(AK3 6R'/5(682Ú; ...(&Ö4K
( ' K2A\ß Java 7J7M# #( EPP
RU K3 7R'/Ú; +¯cK¹.õ&
>+$4&÷9K3Ò4+ 8R'>(AR*63

5(682.Bê4RãHKA.25(682Ú; +$4&÷9K3Ú; .{qê(&d*èê(L¿²7(@OLK assert êRª%2LI+ËKcÓê(ýÃì.KÜê+$4&
÷9K3>2Ú; 2KJ@RK
A.$K(&Ö4K( ' K2A\ß Java 7
J7M# EPP RU K3I+2Ú; +¯c4$ .õøå+$4&÷9K3
1

/A+

2

>K!A'32'.Bê4RãHKèê(&2Ú;  ÒtÖØL$$2K3L/2>K!A'32'.lpìRýÖ2.>>'/
ú8*4²'FID*).sÞR{qK±ê'2
K3EK'.Bê4 *OL&B2ÞúLBê4' I{qLsÞR¯Jõ(+H#&õ4.FR6¡' K.'2Bê4.ãH+ $3
;.'KJ25(682*7MI@++Ë&Ú; R{qKõ/ ê.(M;(S)*OL&4*43 25(682B.J /lp'2J2LRýÖÚ; .{q ß'
2K3F802¼ÕeD¯Õe/¼f&B4J/¼O
I*4.'2LRýÖ&sÞR-A«@( 'K3 2.H6*d*èê/-A«>LsÞ
RF#K.B¡ '2K3cÓ/9&.¼ÕeR
IS @*eM+b¼8K('2sÞRF#K
( ' K3* 2 êB5(682.'¿²ñRÈ=KA+@(&2I4S0*) è+1OL&4K 27MI@R &I4SR!7#
KR)LKÄ0/r+$ >(63$ðöBBê4H+/\2'2K3F8¬g+5(682R$Ø(&B27M#h'Kg
Õ'/ª£+*IKR3*4 I'2K3
Watermark for Software and its insertion, attacking, evaluationand implementation methods. Yuuji ICHISUGI (Electrotechnical Laboratory).

5(682Ú; 2KJ@.
C

'/Ú; .{qê(&2d*èêRµA&4$ V(2LL.6^Dx¡LKcÓ
èê+$4&÷9K3LI.Õ.{q2KJ@R+e?OK('2cÓ.d4Ö¿*Ú; 2KJ@ ' K(ÓÏ' K3* 2%£'/2) I+ÚI .}ù
RE&sÞ {qL)R{qK2K
J@ Rz8&4K3) I04*J
8.¼g204*J I04*J8.¼/%£'/Ë`(*43>2 CD-ROM '.â/¬h/x¡
& I2F(+:*#sÞR{q&¬hKxJRx¡&4K3
2.1

'{q

2.2

¼Õe¼

L/ÒB¡ *èê'2)?+£cV¡Õ*).²'sÞR{qKèê'2K3.>>'/2cÓ £cV 2KoRú$&¼K./
Ë6'2K37MI@+rr©.!7#@RÈ$&2¼L&4*4 !7#K(B62
B2+*K 27MI@R <L&!7#K!
SR)LKÄ0ì/-K3)?.¼ÕeD±® eR27MI@.
4JR¼8*4H6+¼&sÞR{qKèê'2
K3.èê/¼ÕeR9&¼K('¡ +s1

ÞRF#' K3

2.6

7MI>.? 'J3KsÞ.ýÖ

7MI@.)?+/2¬hK04*J+/9BîL*4 27MI>/'#&4K
;.>S&3#RýÖ2HJî*èê sÞ µ>L& J2LRýÖK( ' K3(&2)×.H6*B. z8ILK3
.1$F(& assert êRª%K3 C/C++ 7M
I>/'0#.A+2h.H6*
assert >MR
 ¼Õ.àq. RqL8K3
)?+-A«@( º43 if-then-else .¼3*if £.uàw+ not R$
assert(expression);&2 then ( else RqL8K3+
 ±® 3 . RqL8K3
7MI>/2g+ expression 9 '2K(
 ±® .¡ö. 5RqL8K3
Ù¡&7MI@R3B expression .KÜ
ì+2>JTRÄ8*4*I0LRýÖ& K7.JèRqL8K3
)Rh.H6+¼K( ' K3
 ¼á¢ 8 (2S14I+HKÒÁ
Ø+H#&¡ +sÞ F8KEL 2K3>2¼
KK G$L&4&2* $ ¼ ¡ +* assert(P); A; n if (P) { A; } else { X; }8KoB2cÓ+H#&¡ +sÞR!#' & w P /5(682+0 *L0r+ '2K 2>63>2\¿*¼/ 3.2'÷9KÜòcÓ+¬ Ö¿+)R &B.(Rú$K
43./aß'2KÕ êÜ'2K3$>J2.¼/"ß
¿'2K3w X /2 J*K.)?
2.4 ;.Ò.24>4RýÖ+³ê*4u4.)'2./Ú; 2º.;'/;.Ò+6P+Ù>#&4*4 KJ@+H#&"r+ýÖÜ& 43 +.2J2S14I.+> L&4K3. +sÞR{q' K(46 '*24¿ cÓRýÖ&)R¼K('sÞR{q' R¹õKsÞR.+qLK( ' K I
K3'2K3
F80 C ;'/¯Õ3õD¦$;.YÕ.KÜ assert ê+Ë&/2h.H6*cÓê z8IL
/S14I ÙA&H4(¡öL&4K3L K3> assert ê+HKsÞ{q ELRýÖ26¡. 'YÕRKÜK)+¼ ) ±4+2K(K3?.Q&. if £+Ë2
K('sÞR{qK( ' K3­V;.o uàw.KÜÜç.MR¯K)R-A«?2è/29h;HJ .r¸î.4j£ rÖ +5(682R&?K('26KîBë+*4L&4KA2sÞ{q.ßìB43
I*4uàw7Rú$õ( ' K3&2.H6*uàwRf$ if £/ assert £'2#(ú*2.5 Õ0GS2
è+ n ®.F+Ë&2Q; &$ÞL if (P) { A; } else { X; } n P; A; n .0GSR¬hK(46èê'2K3
.0GS/Q:*#&4K.'2Bê4 2 (46¼RE( ' K3B!MS2²g­'
L0õ4/K)P'2K3L/2z8ILK?' .5(682. '/2uàw % +r+
ÒBB2*èê'2K3+*KB. )6 /ì·' *43 2Q'/
.èê/.>>'/" ¿ 2HJ ¿* *&B6;(S)å*#7Bê45(60J8GS/z8ILK3
82 ùLK(+*K3
F8025(682.K.BEK+Ë&R4$ Ö42F(+:*Ke?O 3 cÓê.C'¬hL0H43>2B(B(5(682/h+0GS2# %R'/2MR'÷9?2KJ@'{qL
7&4B.*.'21$.0GS+$ 1®. sÞR!#K±ê+$4&CK3LI.cÓê
F+.?¬hK(46±#B2F.2*4 .4$ /2>K!A'32'.Ú; +Ë
5(682*I0ß'2K3
&BÁÖß*B. 2K3
2.3

7MI@j¼

2

3.1

<cÓ

RVdK('2ÜòcÓ+Ë Kèê ª%L
&4K [7]3.èêRÖ4K(2Õ®.F Üò
2Ú; qJ'Rf!Ê#&¹O
4'Rù#&B24G '.?.1®.F
R6¡K( ' K3
ÜòcÓ+ËKB61$.Ë1(&2d<ØDd¼ØRÚ; (¦ÖK( 2ILK3L+$4&/ 7R'÷9K3*SI . EJ&3RÈ]K6)7 5(682.B.+\¿+-A«>L&4Ko2.)R <&¼K(46cÓê 2K3
F802ãí I2KI4S0.o22
7JGSR 2S6K& <&2I4S
R!7#KK!SR*4H6+5(682RLKÄ0ì r+$ >(63<cÓ.ÒB^*o(&2¬hL5(682..ÒRQ+2 2;r.èê'0 Iu02L/6 .!#L47(*
K33'+F8L024!Rú* IvK(+ K3L/2IFKÚ; {q2KJ
@+²I'/2K 2Bê4[+(#&/B!
MS4J.*4èê'2K3
3.2

3.3

ºê{qcÓ

3.4

ÒÁØcÓÚ; {q$K2K4/ôG*{q2KJ@ G$L&4Ko2cÓ/2¬hLÚ; qJ'+2:*#sÞRJÁ{qK
('2B(B(q#&4sÞRK( 'K3LRºê{qcÓ(ebK3ºê{qcÓRO.h.£c+F8K(2h.H6+*K3B(B( 12 (46sÞ  LO+2cÓ.h+I+ 34 (46sÞR «@( ' K3
.Üç2B(B(.sÞ 12, 14, 32, 34 .)L #. /2ì·' **K3cÓ/I+ÕA2Õ
(B:*#sÞR{qK('2B(.sÞR_h<A*K( ' K3
>K!A'32'+ËKÚ; BµA&2º.{q2KJ@/.cÓ+¬4(@OLK3
Ë1(&/21ÖÚ; {q$KDôG*{q2KJ@RG$*4( *43
2.6 '÷9 assert ê/2ºê{qcÓ aß*{qê.F'2K3Kî{qRE( assert £ **K.'2L)hsÞR{qK( ' *43>2sÞ.ºê{q Ô*6. Ø7R:H
6*2KJ@/2ºê{qcÓ+B4(z8IL
K35(682.o2F801$sÞR{qK
3+4D©î 2­+*KH6*2KJ@'2L02F8Õ'2#&BsÞRºê{qK(
B/D.5(682/14B.+*I*43ºê{q.Õ 2*L02B(.sÞR2K¯îÅ K
( ß*.'2Ú; (&.]Rç6
K3

ÜòcÓ

:*KÚ; sÞ q#5(682RÕq±2LIR4+%í.{qL&4B.(:*KsÞ {qL5(682RùJõèê'2K3
ÜòcÓ/>K!A'32'+ËKÚ; .
º+BÁÖK( ' K3
ÜòcÓ.FR23+ËKÚ; '!gK33sÞ.? pixel .R2F+ I*4¯
î+(V+¼ØK('sÞ {qL&4K(K3cÓK¡/2Õ.3'R±+qL2$K
ð. pixel (+ªd&R(#J2LL.3' IIS @+ pixel RGíJK('23(&.úA/¼8+{qL'RK( ' K3
5(682.o2ÜòcÓ.F(&h.H6*B. 2K3?±® .U.w. RqL8K
('sÞR{qK2KJ@ 2#(K3
Õ.0GS.5(682R±+qL2LL.
0GS I2IS @+1$%$±® RG3õ('2{qLsÞR' K3>K!A'32'.o2ðö¿'xRf*4
F+HKÙË*4RãH' L0â(KBº2ÜòcÓ/9B0f¿*B.(/*
I*43
Kè5(682.o2ðö¿'xRf*4F RË`(&H4.*I2)?+FID
R£cV(&qLK*).ãí.¡ *èê'â
'2K3 #&25(682Ú; .õ/2Bãí.èêHJBB2*Ú; '2K(R®\4*I02ÜòcÓR\TK(/' *43* 2FIDR3#(V+Ë»KqØèwÚ; {q2KJ@ 8*o/2 .{qL)+Ë2ÒÁØS14KR
K('7MI@.lpì Fn2{qsÞ FLKßì 2K3.cÓèê/2{q2KJ@ Ò''*&B2>Ú; .52+¯K'x Q*&BK( ' K3
 2S14I.ÒÁØ 9B6ÒÁ7*)+*I*4.($Ò+2sÞ F8*4'-Kß3ìBâ 43Kû¿*S14I ).¯î.ÒÁØ
RK R2 h'{q$KRùíK('2ÒÁØcÓ+/âË ' K3
3.5

4¿ cÓ

3.6#¿ cÓ

4.3{q$K62KJ@RG$' K

Kû+{q$K62KJ@ G$L&4K(2ºê{qcÓD4¿ cÓ+HKsÞ..
Ä0ì ÷K3{q2KJ@RG$*4o20Rï' K;('ï"&+Ú;
.{qR,ïK(46|Ö²Ñ+èL&>
63.H6*²Ñ'/2KJ@rÉ.ïìR3
IL43>2{q$K.5J5('.G$2
2K4/)W(&.ýµ ' *4.'2Ú; 
rÉ.n.>+*K3' L02{q2KJ@$KRG$&B!
Q*2KJ@'2K( 7>43{q2KJ@ ).4¿*ì.?+
Ç%4& J2* ${q2KJ@ cÓ+'
IL&4Ko2) IÖ¿+sÞR!#K$K ùíL&>6o 2K3

7MI@.#¿*ì+Ç%4&4K{q2KJ@'/2'0# ((B+5(682R2xÑRk9K('Ú; R!#K( ß
4.4 ¬h¡.vô*B. 2K3
2.6 '÷9 assert ê+ËKcÓêB#¿ .K)8sÞR{qKA+9Ü*g­/1¶(8K34è ,43BL â1L02-#(OR1#5(682¬h.è+2Ü 2K3+
4 Ú; .KÜê.o'sÞR{q&¬hK2(4614è 'Ú; 2KJ@/B!MSÒ*cÓ+Ë K3&!Q'2K( êÜ'2K 2L))+BýÃì,4( 9Ü'2K3.R'/2ýÃìRKÜ 4.5 I ×
K4$ .TÕRV(K3sÞR{qK('7MI@.4 H37M
I@.g­ ÞK( 2J6K32x¿+
4.1 sÞ{qPî/ J*K.)(;(S)¼OI*4(
K¡/.)?+2Ú bit .sÞR-A«A 7>43 25(682.Öè+H#&/2
K 2(46£î'2K32KJ@+H#&/\ 4Dg­ Õ­+*#(&B2Ú; *B.B2K3sÞ{qPî 14(2) .!Qì HJB2+È]L&4Kè 7>4o¬h' º4o+2QV+:*#sÞR{q B2K3
K( ' *43[7] .ÜòcÓ+B4qØê'/2F.Õ n + 4.6 7MI>.;2 9Ü )6F bit Õ 9Ü'2K3L/2r.2«Õ+HKqØ'/ log n '2K.+9K(2"r+â 4& u4.)+Ë&Ú;  {q' K'2K3>2cÓRô6¡KG /2q. è 7>4 27MI>+lpì+¯K2S(*
bit ÕRD;)AÕ¯Õ¿+h K3ã#& [7] Rý )R4&BI6('2HJB2*{q2KJ@ÖKA+/' K sÞ{qPî 4è 7>  ' Ko 2K3
43
4.2

5

52.g 

4$ .{q2KJ@.KÜ

L>''÷9{q2KJ@ I4$ G
32*®¨¿++KÜ&J+B. J 1'2K3
.?'/2#¿ .Ä0DI ×/2KB.
.2 assert ê L¿²7(z8ILK3>24L.èêB\¿*¼+Ç%4&4K.
'2.>>'/ÜòcÓ+¬43ã#&2FID.qØ.VdDd<Ø(.e?O*) 9Ü'2
K3

è+Bê4 *OL2æì+H#& OLK
(+*#g2·V2K4/5(682+ã+Ë&6% +õ4 '2K7(!3' K9Ü
2K3$>J2 <8L*L0¿ üíLK$
(/:*J24 +B2'2#&B22KJ@D52 K(+ *4oB2K3
4

{qê
Ì <cÓ
ÌÜòcÓ
Ìºê{qcÓ
ÌÒÁØcÓ
Ì4¿ cÓÌ#¿ cÓ
sÞ{qPî
52.g 
{q$KG$¬h¡.vô
I ×
7MI>.;2
1. 8*£cV¡Õ{q2. ¼Õe¼
3. if-then-else .¼
4. assert ê|||||||||||||||||||||||
1

2

3

4

? [ [ [
? ? ? ?
? ? ? [
[ ? ? [
? ? ? [
[ [ [ ?
[ [ ? [
[ [ [ [
? ? ? [
[ [ [ [
[ [ [ ?
[ [ [ h#epp load "swap"
public class test {public static void main(String[] argv){
int a = 1, b = 2;
swap(int, a, b);}}|||||||||||||||||||||||¿ 1: EPP plugin R1#7MI@.F
6.2

A\ß Java 7J7M# #(EPP/h.3J.14è ' K&@'2K3
1. Java 7MI@.)}ù$K
2. Java ;.A.>M7J7M#
3. A\ Java ;.A.5L@O
EPP /2L '/ Java .)Rq2(
&¼(J24JR¼8+ Java .)R
õ2K7J7M#'2K3 2^A&4A\ìRf#&4K3 EPP +q2K).'+2Þ4 EPP plugin RA¡K(+HJ2Ò*A\Ö ýÖ' K3¿ 1/2 swap >MR¡ö
K plugin RA¡ Java 7MI@.F'2K3>
2Õ. plugin R$g+A¡K(B' K3. plugin 2K>*+ã#& L&4L02 plugin )6 Z@&aRä(/*43 EPP/ Java .)Rj£ &2j£ +K3&2 EPP plugin /.j£ +Ë&Ò*}ùRE( ' K3
EPP f$ Java 1/2Ç%¿+Ñ××.
4K' L&4K3>2A\.A. \hook" º-A«S'2J26Â87+H#&1.#ùRA
\K(+H#&24£êKKR Java ;+
ÞK( ' K3
EPP /2 system mixin (65(682W.
ÑýÖìRAK6³*Â8ÖjRf# 67(AM;2 Ld-2 +H#& L&4K3 Ld-2 / êCommon Lisp .h+L&4K3 2 ê system mixin .ÖR Java +Þ2LRÖ4& EPP
RQ& Java + uù[R*#&4K3
6.2.1 BEKØ.AJ#(
)}ù$K(&úo. EPP .A
J#(/2£êKK.¡ö BEKØL&4K
EPP

J 1: {q2KJ@.KÜÚ; .ê
6.1 )}ù$K.9Üì
6

5(682Ú; {q$K/27MI@.
)+¼RE source to source (ISL
'2K3$Ò*$K(&2L9K'.ÒÁ
Ø$K*) 2K3.H6*(ISLRùK
A.5L@OR2)4)}ù$K(63
Ú; 2KJ@.ÞÍ+¯&/2$2KJ@ 6'2#H6+2è+.2KJ
@REÜçRG$&2cÓèêRZGÒ2Ü
çR53)0#K(464K aßØ'2M
63>2Ë`(K;.;.Ò.0GS2#78.ãD>>*è8.Ë BË6'*L0*I*43.A+B24Ú; {q2K
J@..5L@O(*K)}ù
$K êÜ'2K3;/7MI?S;+¯Kõ..(&Ö4KA+A\ß Java 7J7M# EPP[10] RÈ61 3 EPP /2Ú; RKA.)}ù$K #((&BýÖK(' K3)×. '/2 EPP +$4&÷9K3
1 EPP /2A\ßS14I #( Lods [1] .2 &!CRS7K+&27J7M#+6Ø&@'2K3>2£ê.Zþ.*A\Rß+&4K3

5

((2)8.}ùBBEK(&¡ö' K(46Õ'2K3
.A20í Java .£ê º2A\L&B2º
.6Ú; {q plugin7/Q¼f+18K(
ÂxLK3>2£ê.A\L Java '+º³êK 2LI.º+Ë&B plugin RQ¼f
+ÁÖK( ' K3
>2j£ +ËK}ùRË6+KA21
S>#!S.Ö2 Lisp . backquote macro + KÖ*)R®4ª4KÂ¡'2K3
6.2.2 Ú; .F
EPP R1#Ú; .F(&2 if-then-else .
¼+HKÚ; R3L/ Common Lisp
' 55 .7MI@'2K3../)×.(J3
1. EPP +Ú; {q1RÞK3
2. {q9 bit VR E+&2âG¼Õ+qL& 33. Ú; {q1'/2).C`j£RÑ×¿+#&2 if £ *4 )6 R
3
4. if £ 2L02 bit V. E I 1bit (J 2
1 *I0uàw+ ! R$&2 then ( else R
qL8K3. if £. subtree /L)h¼
*43;A\.A.$K'2J2)+ËK}
ùR.)r©.?'â÷K3
7

Ú; +¯cK¹.õøå5(682Ú; +P+¯cKõõø
å(&)×.B. 2K34LB EJ&3+¯c& J $$ðö ýÖ aß'2J27
MI?S;õ+HKõ 7>LK3

7.1

5(682d<ØC++ H3 FORTRAN .)}ùI46
IJ(& sage++[6] (46&@ 2K3L/2
)R12 tree +&}ùD
2(2Ñ3)+¼K3)L9
K.ÒÁØD2­V C++ *) Sage++ R1#&L&4K3

5(682d<Ø(/27MI@.)
2K4/04*J)R2.4JR¼8+¼
K(+HJ2¹®+HK7MI@.4J. R'K ¯d+K(R63d<Ø+$4&/Òt
4$ .õ 2K [2, 3, 4, 5]3d<Ø/)×.Õ'Ú; (P+¯cK3
 Ú; .!QìRA.d<Ø
d<Ø+HJ <cÓ.Ä0ìR9I( 'K3>2d<Ø/ 8*ÜòcÓ+ËKË1(B*K3ÜòcÓ/Õ.F )Rf!
H#&LR.+ú9K('{qLsÞRFèê'2K3.)+:*#
d<ØRE27MI@.Js¿*jRQ:*#B.+K('2ÜòcÓRd'K3
 Ú; +ËKcÓê(&.d<Ø{q2KJ@ 8*o2Ú; qJ5(682+Ë&d<ØRE(+H#&2{
qsÞ Q+Q+L&>63sÞ 
L&4*4o'B2¬h5(682 I{qLsÞRÖ¿+¯Jõ(/Kû+d
*K3
 2KJ@6h.9ÕÚ; (d<Ø/4LB67MI@.J.lpì7RýÖ&4KA2d<Ø2KJ@ .>>Ú; {q2KJ@+*Ko º43
F80d<Ø.ÒBd*èê(&2¼ÕeR4
J.*4â+b¼8Kèê z8ILK 2
L/.>>Ú; .2KJ@(&BýÖ' K3

6.3.3 MPC++, OpenC++

7.2

5(682d¼Ø

6.3

.¹.)}ù$K

6.3.1 lisp

+ËK}ùR*6A.ÒBB2*;(&2K3$>J2 lisp /LrÉ )
}ù$K'2K3 Common Lisp H3 scheme h.
5J. LALR . parser generator B³ê&4K3
tree
lisp

6.3.2 Sage++.A.S14Kg MOP R&8;(& Ú; +ËKcÓ/4LB5(682+Ë
2K3LI/ÒÁØ2 K¼R9P¿+ë63B2u4.5(682R

C++
MPC++[9], OpenC++[8]6#define BUFSIZE 1024
#define STRLENGTH 1024

7.3

+BEK÷í7.4

5(682;¬¡ÒÁØ2Ú; 2d<Ø/4LB7MI@.4JR¼8*4¼ 2Q +2Kú`&4K
4J QB6*2K4/(V+B6+7MI@
Rr#÷íK6+BEKØ7Bß'2K3+
BEKR¬hK)+¹K(+H
J2 <ù[R¹õK( ' K3>2+BEK÷í/2 assert êRKè+2ÞKelse .)RÙAKA+B9Ü'2K3

main(){... BUFSIZE ...;... STRLENGTH ...;... BUFSIZE ...;... STRLENGTH ...;}

¿ 2: ¼D47MI@

7MI>.µRCõ2ùag.) IùRÅ¡K(B2 I2K¯îß'2K3É¿+/21ÖKI46IJ.¶C2j£.14è2¼
Õe.bè*)RýÖK( z8ILK3B¹®.6;7RQ+>-K( aß'2K(]gLL02LB5(682.QùñÈ=+$ðö(*K3#define CONST1024 1024
#define CONST512 512
main(){... CONST1024 ...;... CONST1024 ...;... CONST512 * 2 ...;... CONST512 * 2 ...;
}

8

>(A

5(682.Bê4RãHKA.25(682Ú; +$4&÷93Ú; .{qê(&4$ d*èê(L¿²7(@OLK assert êRª%2LI+ËKcÓê(ýÃì.KÜ
ê+$4&÷93>2Ú; 2KJ@R
KA.$K(&Ö4K( ' K2A\
ß7J7M# EPP +$4&÷93
ê.(MÖ¿*{q$K.+>'/S#&4*4 2 assert êRÞÍK('2cÓ + ${q2KJ@.G$ß*$K '
KB.(z8&4K3¿ 3: ¼+47MI@^A&¼+45(682+r#¼K±#³êK*I02L/Ú; .!QìRB2*}Æ(*K3
ãí27MI?S;.õ/2È°ì6A\
ì.47MI?S4K H3;ÖRõ
& 3¡Õ¡ö26K!S2jØ7MI?
S2BEKØ2 67(AM(.±#/Þ
Í& &4K3LI.±#/2.>>5Á( t'd¼5(682.ðö(&Ö4K( ' K%õ+¯&ù&4 4S,'â.Ù(z8ILK3¿ 22¿ 3/2¡Õ¡ö.¼+HKd¼Ø.F'2 S+>3
K3B(B($4J.¡ÕRA9 (MR:*K¡Õ+¼82B64J.¡ÕR$¡Õ'J(+H z£ô[1] KÚº?, ª, ÙEd, ½õ²\, % 2j: "S14I #J2¡Õ.¼Rd&4K3( Lods + KAß*GCBEK.j4ê ", 7MI
$Ò.±êR6K!S+ÁÖK('27M
?SS=6@, Jan, 1997.
I@.¼RdK( ' K'2M637M [2] GÈ8m2Ç%37 "5(682.d<Ø+ Køå "2 1997
I@RÕ.±® +]&â÷L0È°ì $(sÞ EJ&3S=6@¦£Ý,SCIS97-10A,2. 2*O!±® 3õ. inline Í$/d
Jan, 1997.
¼Ø+²I'2K3>26%íQ·.]Rf$ [3] ·42GÈ8m2Ç%37 "7MI@).d<Ø+$`)7R\22 unify &9²)+L02
4& "2 1996 $(sÞ EJ&3S=6@¦£Ý,SCIS968D, Jan, 1996.
..¼f DJ+*K3
7

[4] ÙZ®2ÙöZ2r$Uh7 "7MI@.d<Øê.ª% ",sÞ 2Q ã51Qâ ¦£Ý2 5G-7, pages 4{263,1995.
[5] ÙZ®2ÙöZ2r$Uh7 "7MI@.d<Øê.2¿
KÜ "25(682VQ, Vol.108,No.5, Mar, 1996.
[6] Bodin, F. et al: "Sage++: A Class Library for Building
Fortran and C++ Restructuring Tools", In Proc. of ObjectOriented Numerics Confs., Oregon, Apr.1994.
[7] Boneh, D. and Shaw, J.: "Collusion-Secure Fingerprinting
for Digital Data", Advances in Cryptology Proceedings of
CRYPTO'95, LNCS 963, pp.452{465, 1995.
[8] Chiba, S.: "A Metaobject Protocol for C++", In Proc. of
OOSPLA'95, pp.285{299, 1995.
[9] Ishikawa, Y.: "Meta-level Architecturefor Extendable C++
DraftDocument",TechnicalReport TR-94024, RWCP,1994.
[10] Ichisugi, Y.: EPP and Lods home page.
http://www.etl.go.jp/etl/bunsan/~ichisugi8