MG-Progol $B;EMM=q(B

	Copyright (C) 1997 Koichi FURUKAWA

$B%H%i%s%9%l!<%?(B

1. pgl2kl1
[$BL>>N(B]:pgl2kl1
[$BF~NO(B]: .pgl File
[$B=PNO(B]: .kl1 File
[$B5!G=(B]: $BLdBj%U%!%$%k(B(Prolog File)$B$r(BKL1$B%W%m%0%i%`$KJQ49$7(B*.kl1$B$K=PNO$9$k(B

$B<g$J=R8l(B
[$BL>>N(B]: arg_chk/2: 
[$BF~NO(B]: $BF~NO%U%!%$%k$NL>A0(B
[$B=PNO(B]: $B%U%!%$%kL>$N%A%'%C%/$N7k2L(B
[$B5!G=(B]: 
$BBh0l0z?t$KF~NO%U%!%$%kL>$r$H$j!"$=$l$,(B`.pgl'$B$G=*$C$F$$$k$+$rH=Dj!#7k2L(B
$B$rBhFs0z?t$KJV$9!#(B

[$BL>>N(B]: read/15:
[$BF~NO(B]: $BF~NO%U%!%$%k$NCf?H(B 
[$B=PNO(B]: $B%b!<%I@k8@(B,$BGX7JCN<1(B,$BIi;vNc(B,Set Parameter,
	determination$B@k8@(B,commutative$B@k8@(B (Wrapped Term)
[$B5!G=(B]: 
$BF~NO%U%!%$%k$r(BRead$B$7!"%b!<%I@k8@!"GX7JCN<1!"Ii;vNc!"(Bset$B!"(Bdetermination
$B@k8@!"(Bcommutative$B@k8@$KJ,3d$9$k!#$=$l$>$l$O(BKLIC$B$N(BWrapped Term$B$H$7$F07(B
$B$o$l$k!#(B

[$BL>>N(B]: gen_pos/5 
[$BF~NO(B]: ($B@5;vNc$r4^$`(B)$BGX7JCN<1(B,$B%b!<%I@k8@(B
[$B=PNO(B]: ($B@5;vNc$r4^$^$J$$(B)$BGX7JCN<1(B,$B@5;vNc(B
[$B5!G=(B]: 
$BGX7JCN<1$r@5;vNc$H$=$l0J30$N$b$N$KJ,$1$k!#@5;vNc$O(B`$B%b!<%I@k8@(B,$B@5;vNc$N(B
$B%j%9%H(B'$B$N%j%9%H$N7A<0$GJV$5$l$k!#(B

[$BL>>N(B]: gen_neg/4
[$BF~NO(B]: $B%b!<%I@k8@(B,$BIi;vNc(B
[$B=PNO(B]: $BIi;vNc$N%j%9%H(B
[$B5!G=(B]:
$BIi;vNc$r%b!<%I@k8@Kh$KJ,$1$k!#(B`$B%b!<%I@k8@(B,$BIi;vNc$N%j%9%H(B'$B$N%j%9%H$N7A(B
$B<0$GJV$5$l$k!#(B

$B30It%b%8%e!<%k(B
	merc.kl1 mode2mg.kl1 util.kl1 bk2mg.kl1 mg2kl1.kl1 w_kl1.kl1



2. merc.kl1

$B<g$J=R8l(B
[$BL>>N(B]: merc/3
[$BF~NO(B]: MG-Clause
[$B=PNO(B]: Merc$BJQ49$5$l$?(BMG-Clause
[$B5!G=(B]: $BF~NO$H$7$FM?$($i$l$k!"3F(BMG-Clause$B$KBP$7!"(Bmerc$BJQ49$r9T$J$&!#(B


3. mode2mg.kl1

$B<g$J=R8l(B
[$BL>>N(B]:modeH2MG/7
[$BF~NO(B]: $B%b!<%I(B(Modeh)$B@k8@(B
[$B=PNO(B]: Magic-set$BIU$-(BMG-Clause, $B%?%$%W>pJs(B, Unwrap$B$5$l$?%b!<%I@k8@(B
[$B5!G=(B]: 
$B%b!<%I(B(Modeh)$B$r(BMagic-set$BJQ49$9$k!#$^$?%b!<%I@k8@Cf$KI=$l$k%?%$%W>pJs$r(B
$BCj=P$9$k!#(B

[$BL>>N(B]: modeB2MG/7
[$BF~NO(B]: $B%b!<%I(B(modeb)$B@k8@(B
[$B=PNO(B]: Magic-set$BIU$-(BMG-Clause, $B%?%$%W>pJs(B, Unwrap$B$5$l$?%b!<%I@k8@(B
[$B5!G=(B]:
$B%b!<%I(B(Modeb)$B$r(BMagic-set$BJQ49$9$k!#$^$?%b!<%I@k8@Cf$KI=$l$k%?%$%W>pJs$r(B
$BCj=P$9$k!#(B


[$BL>>N(B]: get_type/13
[$BF~NO(B]: $B%b!<%I@k8@(B
[$B=PNO(B]: +type,-type,#type$BJQ?t(B,type$B>pJs(B
[$B5!G=(B]: 
$B%b!<%I@k8@Cf$N%?%$%W>pJs$r!"Cj=P$7(B+type,-type,#type$B$KJ,$1$k!#(B

[$BL>>N(B]: modeh2mg/5
[$BF~NO(B]: modeh$B@k8@(B
[$B=PNO(B]: MG-Clause
[$B5!G=(B]: 
modeh$B@k8@$r(BMG-Clause$B$KJQ49$9$k%b%8%e!<%k$NK\BNIt(B

[$BL>>N(B]: modeb2mg/
[$BF~NO(B]: modeb$B@k8@(B
[$B=PNO(B]: MG-Clause
[$B5!G=(B]: 
modeb$B@k8@$r(BMG-Clause$B$KJQ49$9$k%b%8%e!<%k$NK\BNIt(B,
$BDL>o$N=R8l!"F10l2=!"Hf3S1i;;;R!"$=$l$>$l$r(BMG-Clause$B$KJQ49(B


4. bk2mg.kl1 

$B<g$J=R8l(B
[$BL>>N(B]: gen_bk/4 
[$BF~NO(B]: $B%b!<%I@k8@(B, $BGX7JCN<1(B
[$B=PNO(B]: Magic-set$BIU$-(BMG-clause
[$B5!G=(B]:
$BGX7JCN<1$r%b!<%I@k8@$r4p$K%^%8%C%/%;%C%HJQ49$7!"$=$l$r(BMG-Clause$B$KJQ49(B
$B$9$k!#(B


5. mg2kl1.kl1 

$B<g$J=R8l(B
[$BL>>N(B]: write_mg/5
[$BF~NO(B]: MG-Clause
[$B=PNO(B]:
[$B5!G=(B]:
MG-Clause$B$r(BKLIC$B%W%m%0%i%`$KJQ49$7!"=PNO%U%!%$%k$K=PNO$9$k!#(B

6. w_kl1.kl1

$B<g$J=R8l(B
[$BL>>N(B]: write_header/4
[$BF~NO(B]: $BF~NO%U%!%$%kL>(B,$B=PNO%U%!%$%kL>(B,$B=PNO%9%H%j!<%`(B
[$B=PNO(B]:
[$B5!G=(B]: $B=PNO%U%!%$%k$K!"%X%C%@$r=PNO$9$k!#(B

[$BL>>N(B]: write_set/3
[$BF~NO(B]: set parameter, $B=PNO%9%H%j!<%`(B
[$B=PNO(B]: 
[$B5!G=(B]: 
$B=PNO%U%!%$%k$K!"(Bset parameter$B$r(BKLIC $B%W%m%0%i%`$N7A<0$G=PNO$9$k!#7A<0$O(B,
`set(id,R):- R=Value.' $B$^$?$3$NB>$K!"%G%U%)%k%HCM$r=PNO$9$k!#(B

[$BL>>N(B]: write_det/3
[$BF~NO(B]: determination$B@k8@(B, $B=PNO%9%H%j!<%`(B
[$B=PNO(B]:
[$B5!G=(B]:
$B=PNO%U%!%$%k$K(B determination$B@k8@$r(BKLIC$B%W%m%0%i%`$N7A<0$G=PNO$9$k!#(B

[$BL>>N(B]: write_com/3
[$BF~NO(B]: commutative$B@k8@(B, $B=PNO%9%H%j!<%`(B
[$B=PNO(B]:
[$B5!G=(B]:
$B=PNO%U%!%$%k$K(B commutative$B@k8@$r(BKLIC$B%W%m%0%i%`$N7A<0$G=PNO$9$k!#(B

[$BL>>N(B]: write_MG/5
[$BF~NO(B]: MG-Clause(KLIC$B%W%m%0%i%`(B)
[$B=PNO(B]:
[$B5!G=(B]: 
$B=PNO%U%!%$%k$K!"(BKLIC$B%W%m%0%i%`$KJQ49$5$l$?(BMG-Clause$B$r=PNO$9$k!#(B

[$BL>>N(B]: write_ex/3
[$BF~NO(B]: $B@5;vNc(B/$BIi;vNc(B
[$B=PNO(B]:
[$B5!G=(B]: 
$B=PNO%U%!%$%k$K@5(B($BIi(B)$B;vNc$r(BKLIC$B%W%m%0%i%`$N7A<0$G=PNO$9$k!#(B

[$BL>>N(B]: write_footer/3
[$BF~NO(B]: $B=PNO%U%!%$%kL>(B
[$B=PNO(B]:
[$B5!G=(B]: 
$B=PNO%U%!%$%k$K!"%U%C%?$r=PNO$9$k!#(B



MG-Progol$BK\BN(B

progol.kl1

$B<g$J=R8l(B
[$BL>>N(B]: gen_msh/7
[$BF~NO(B]: $B@5;vNc(B,$BGX7JCN<1(B(MG-Clause)
[$B=PNO(B]: $B:G<e2>@b(B, Path-set
[$B5!G=(B]: $B:G<e2>@b$r@8@.$9$k!#(B

[$BL>>N(B]: mgtp/9
[$BF~NO(B]: $B%b%G%k3HD%8uJd(B,$B%b%G%k(B,$BGX7JCN<1(B(MG-Clause),$BJQ?t?<EY>e8B(B,$B?dO@?<EY>e8B(B
[$B=PNO(B]: $B:G<e2>@b$NH]Dj(B
[$B5!G=(B]: 
MGTP$B$N%"%k%4%j%:%`$K=>$$!":G<e2>@b$NH]Dj$r@8@.$9$k!#(B

[$BL>>N(B]: hash/4
[$BF~NO(B]: $B:G<e2>@b$NH]Dj(B
[$B=PNO(B]: $B:G<e2>@b(B
[$B5!G=(B]: $B:G<e2>@b$NH]Dj$KBP$7!"$=$N4pAC9`$rJQ?t$KCV$-49$($k!#(B

[$BL>>N(B]: path/3
[$BF~NO(B]: $B:G<e2>@b$N0lIt(B
[$B=PNO(B]: Path-set
[$B5!G=(B]: 
Path-set$B$r7W;;$7!"$=$l$K4p$E$-C5:w6u4V(B($B35G0LZ(B)$B$r@8@.$9$k!#(B

[$BL>>N(B]: a_star/9
[$BF~NO(B]: $B:G<e2>@b(B,Path-set,$BGX7JCN<1(B,$B@5;vNc(B,$BIi;vNc(B,
[$B=PNO(B]: $BC5:w7k2L(B
[$B5!G=(B]: 
Path-set$B$G<($5$l$kC5:w6u4V$r(BA*-like$BC5:w%"%k%4%j%:%`$K4p$E$-C5:w!"2r2>(B
$B@b$rJV$9!#(B

[$BL>>N(B]: head_refine/10
[$BF~NO(B]: $B:G<e2>@b(B,$B@5;vNc(B,$BIi;vNc(B,Path-set,$BGX7JCN<1(B
[$B=PNO(B]: $BF,It%j%F%i%k$N$_$+$i$J$k8uJd2>@b(B
[$B5!G=(B]: 
$BF,It%j%F%i%k$N$_$+$i$J$k8uJd2>@b$N@8@.(B

[$BL>>N(B]: master/9
[$BF~NO(B]: $B8uJd2>@b$N%j%9%H(B
[$B=PNO(B]: A*-like$BC5:w$N7k2L(B
[$B5!G=(B]: 
$BC5:w$N:]$N%^%9%?%W%m%;%9!#8uJd2>@b$KBP$7!"(Bexpand,kill$B$J$I$N;X<((B
(message)$B$rAw$k!#$^$?;^4"$N4p=`$r;}$A!"I,MW$K1~$8$F;^4"$r9T$J$&!#(B
A*-like$BC5:wK\BN(B

[$BL>>N(B]: node/13
[$BF~NO(B]: Master$B$+$i$N(Bmessage
[$B=PNO(B]: 
[$B5!G=(B]: 
$B3F8uJd2>@b!#$=$l$>$lFHN)$7$?%W%m%;%9$H$7$FF0:n$9$k!#%^%9%?$N;X<($K=>$C(B
$B$F!"(Bexpand,kill$B$r9T$J$&!#?7$?$J(Bnode$B%W%m%;%9(B($B8uJd2>@b(B)$B$r@8@.$9$k!#(B

[$BL>>N(B]: node_loop/20
[$BF~NO(B]: 
[$B=PNO(B]: 
[$B5!G=(B]: 
$B?7$?$J8uJd2>@b@8@.$NK\BN(B

[$BL>>N(B]: cover/21
[$BF~NO(B]: 
[$B=PNO(B]: 
[$B5!G=(B]: 
MGTP$B$N%"%k%4%j%:%`$K4p$E$-!"3F8uJd2>@b$KBP$7$FHoJ$7W;;$r9T$J$&!#(B


[$BL>>N(B]: write_candidate/4
[$BF~NO(B]: $B8uJd2>@b(B,$B?dDjCM(B
[$B=PNO(B]: 
[$B5!G=(B]: 
$B8uJd2>@b$rI8=`=PNO$K=PNO(B

[$BL>>N(B]: write_msh/3
[$BF~NO(B]: $B:G<e2>@b(B
[$B=PNO(B]: 
[$B5!G=(B]: 
$BI8=`=PNO$K:G<e2>@b$r=PNO$9$k!#(B

[$BL>>N(B]: w_result/3
[$BF~NO(B]: $B?dO@7k2L(B
[$B=PNO(B]: 
[$B5!G=(B]: 
$BI8=`=PNO$K7k2L$r=PNO$9$k!#(B
