%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% (C)1992 Institute for New Generation Computer Technology %
% $BG[I[$=$NB>$O(B COPYRIGHT $B%U%!%$%k$r;2>H$7$F2<$5$$(B          %
% ( Read COPYRIGHT for detailed information. )             %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% phrase rank a1,a2,a3,a4,b,c,d %
% arc    rank a,b,c,d           %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%version 1.0
%Aug 13. 1991
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%                            %%%
%%%     Modification Check     %%%
%%%                            %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% $B%3%a%s%H$K$D$$$F(B  					   
%%% $B0J9_(B  rank(X) * rank(Y) --> arc(Z)
%%% $B$H$$$&5-=R$,8=$l$k$,(B $B$3$l$O(B 
%%% $B78$j$NJ8@a$N%i%s%/$,(B X, $B<u$1$NJ8@a$N%i%s%/$,(B Y $B$N;~(B
%%% $B$3$l$i(B2$BJ8@a$O%i%s%/$,(B Z $B$N%"!<%/$G7k$P$l$k$3$H$r<($7$F$$$k(B

%%% $B$^$?K\%W%m%0%i%`Cf$N%3%a%s%H$N3FHV9f(B 
%%% $BNc$($P(B
%***  topic$B=hM}(B                                ***
%*** (1) rank(X) * rank(a3)  --> arc(a)        ***
%*** .........                                 ***
%%% $B$O(B, $B%I%-%e%a%s%H;qNA(B
%%% $B!V78$j<u$1$N6/EY$K4p$E$/0MB8J8K!(B 
%%%   $B@)8B0MB8J8K!(B (RDG) --$BJ8K!$NF~=PNO$*$h$S@)Ls(B --$B!W(B
%%% $B$NI=(B2,4,6 $B$N3F%^%9$NHV9f$H0lCW$9$k(B

%%% $B%W%m%0%i%`$OBg$-$/(B2$B$D(B $B$9$J$o$AJ#?t0MB84X78$N@)Ls$H(B
%%% $B0MB84X78(B($BEy0L4X78(B)$B$N@)Ls$+$i@.$k$,$=$l$i$O$$$:$l$b(B3$B$D$KJ,4t$9$k(B
%%% $B$^$:78$j$H<u$1$NJ8@a$N%i%s%/$GJ,$+$l(B, 
%%% $B<!$K(B2$BJ8@a$,NY$j9g$C$?$b$N$+H]$+$GJ,$+$l$k(B.  
%%% $B$5$i$K9=J8B0@-$NCM$K$h$C$FJ,4t$7$F$$$k(B

%%% $BJ#?t0MB84X78$N@)Ls(B                           	   %%%
%%% check_topic_main$B$N0z$-?t$K$D$$$F(B           		   %%%
%%% $BBh(B1$B0z$-?t(B SYN1in  : $B78$j$NJ8@a$NF~NO9=J8>pJs(B  	   %%%
%%% $BBh(B2$B0z$-?t(B SYN2in  : $B<u$1$NJ8@a$NF~NO9=J8>pJs(B           %%%
%%% $BBh(B3$B0z$-?t(B SYN1out : $B78$j$NJ8@a$N=PNO9=J8>pJs(B           %%%
%%% $BBh(B4$B0z$-?t(B SYN2out : $B<u$1$NJ8@a$N=PNO9=J8>pJs(B           %%%
%%% $BBh(B5$B0z$-?t(B Arc     : $BJ8@aF1;N$r7k$V%"!<%/$N%i%s%/(B       %%%
%%% $BBh(B6$B0z$-?t(B P       : $BJ8@aF1;N$,NY$j9g$&$b$N(B(adj_ph)$B$+(B   %%%
%%%                     $BH]$+(B(ph)$B$N%U%i%0(B                   %%%

check_topic_main(SYN1in,SYN2in,SYN1out,SYN2out,Arc,P) :-
    search(SYN1in,rank,mer,Rer),
    search_no_fail(SYN1in,gr(Gmer1)),
    Gmer1 == [topic1($B$O(B)],!,
    search(SYN2in,rank,mcand,Rcand),!,
    check_span_arc_t(Rer,Rcand,SYN1in,SYN2in,SYN1out,SYN2out,Arc,P),!.

%%% check_span_arc_t$B$N0z$-?t$K$D$$$F(B           		   %%%
%%% $BBh(B1$B0z$-?t(B Rer     : $B78$j$NJ8@a$N%i%s%/(B                 %%%
%%% $BBh(B2$B0z$-?t(B Rcand   : $B<u$1$NJ8@a$N%i%s%/(B                 %%%
%%% $BBh(B3$B0z$-?t(B SYN1in  : $B78$j$NJ8@a$NF~NO9=J8>pJs(B 	   %%%
%%% $BBh(B4$B0z$-?t(B SYN2in  : $B<u$1$NJ8@a$NF~NO9=J8>pJs(B 	   %%%
%%% $BBh(B5$B0z$-?t(B SYN1out : $B78$j$NJ8@a$N=PNO9=J8>pJs(B 	   %%%
%%% $BBh(B6$B0z$-?t(B SYN2out : $B<u$1$NJ8@a$N=PNO9=J8>pJs(B 	   %%%
%%% $BBh(B7$B0z$-?t(B Arc     : $BJ8@aF1;N$r7k$V%"!<%/$N%i%s%/(B       %%%
%%% $BBh(B8$B0z$-?t(B P       : $BJ8@aF1;N$,NY$j9g$&$b$N(B(adj_ph)$B$+(B   %%%
%%%                     $BH]$+(B(ph)$B$N%U%i%0(B		   %%%

%***********************************************************%
% $BJ#?t0MB84X78$N=hM}(B($B%<%mBeL>;l$N>H1~=hM}(B)                  %
% $BJ#?t0MB84X78(B(topic)$B$N=hM}$O(B, $B78$j@h$NJ8@a$N%i%s%/$K$h$j(B   %
% $B$=$N=hM}$,0[$J$k(B                                          %
% $B78$j@h$NJ8@a$N%i%s%/$,(B				    %
% (1) rank(a3) $B$"$k$$$O(B (2) rank(a4) $B$N;~(B   		    %
%     $B78$j@h$NMQ8@$N;}$D3J%U%l!<%`$N%A%'%C%/$O9T$o$:(B        %
%     $BL5>r7o$K0MB8$5$;$F$$$k(B				    %
% (3) rank(b) $B$"$k$$$O(B (4) rank(c) $B$"$k$$$O(B (5) rank(d)$B$N;~(B %
%     $B78$j@h$NMQ8@$N;}$D3J%U%l!<%`$N%A%'%C%/$r9T$J$$(B        %
%     $B0MB8$5$;$F$$$k(B $B%A%'%C%/$O(Btopic$B$,78$j@h$NMQ8@$N(B        %
%     $B%U%l!<%`Cf!V$,!W3J$"$k$$$O!V$r!W3J$NMWAG$K@.$jF@$k(B    %
%     $B>l9g$K$N$_0MB8$5$;$F$$$k(B				    %
%***********************************************************%


%*************************************************
%***  topic$B=hM}(B                                ***
%*** (1) rank(X) * rank(a3)  --> arc(a)        ***
%***     first time$B$O(B X = valiable$B$N;~(B         ***
%***     not first time $B$O(B X /= valiable$B$N;~(B   ***
%*************************************************

check_span_arc_t(X,a3,SYN1in,SYN2in,SYN1out,SYN2out,a(ID1,ID2,Arc_k,topic),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer1)),
    last(Gmer1,Gmer11),
    search_no_fail(SYN2in,gr(Gmer2)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_xa3(Cmer,Ccand,Gmer11,Gmer2,SYN1in,SYN2in,SYN1out,SYN2in,Arc_k,D).

%(cat(mer(ry)),gr(mer(topic1))) * (cat(mcand(y)),gr(mcand(case2)))
%1. ($BNc(B) $B;d$O(B $BFI$s$@$j(B
% first time
check_span_arc_xa3(ry,y,topic1(X),[case2(C)],SYN1in,SYN2in,SYN1out,SYN2in,modif,topic) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),
    search(SYN1in,rank,mer,Rmer),
    unbound(Rmer),
    subst(rank(X,mer(P)),SYN1in,rank(X,mer(a3)),SYN1out).

% 2.
% not first time
check_span_arc_xa3(ry,y,topic1(X),[case2(C)],SYN1in,SYN2in,SYN1in,SYN2in,modif,zero_pro) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),
   search(SYN1in,rank,mer,Rmer),
    bound(Rmer).



%*************************************************
%***  topic$B=hM}(B                                ***
%*** (2) rank(X) * rank(a4)  --> arc(a)        ***
%***     first time$B$O(B X = valiable$B$N;~(B         ***
%***     not first time $B$O(B X /= valiable$B$N;~(B   ***
%*************************************************

check_span_arc_t(X,a4,SYN1in,SYN2in,SYN1out,SYN2out,a(ID1,ID2,Arc_k,topic),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer1)),
    last(Gmer1,Gmer11),
    search_no_fail(SYN2in,gr(Gmer2)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_xa4(Cmer,Ccand,Gmer11,Gmer2,SYN1in,SYN2in,SYN1out,SYN2in,Arc_k,D).

%(cat(mer(ry)),gr(mer(topic1))) * (cat(mcand(y)),gr(mcand(case1)))
%2. ($BNc(B) $B;d$O(B $BFI$s$G(B
% first time
check_span_arc_xa4(ry,y,topic1(X),_,SYN1in,SYN2in,SYN1out,SYN2in,modif,topic) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),
    search(SYN1in,rank,mer,Rmer),
    unbound(Rmer),
    subst(rank(M,mer(P)),SYN1in,rank(M,mer(a4)),SYN1out).

% 2.
% not first time
check_span_arc_xa4(ry,y,topic1(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,zero_pro) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),
    search(SYN1in,rank,mer,Rmer),
    bound(Rmer).


%*************************************************
%***  topic$B=hM}(B                                ***
%*** (3) rank(X) * rank(b)  --> arc(b)         ***
%***     first time$B$O(B X = valiable$B$N;~(B         ***
%***     not first time $B$O(B X /= valiable$B$N;~(B   ***
%*************************************************

check_span_arc_t(X,b,SYN1in,SYN2in,SYN1out,SYN2out,b(ID1,ID2,Arc_k,topic),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer1)),
    last(Gmer1,Gmer11),
    search_no_fail(SYN2in,gr(Gmer2)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_xb(Cmer,Ccand,Gmer11,Gmer2,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(topic1))) * (cat(mcand(y)),gr(mcand(case1)))
%3. ($BNc(B) $B;d$O(B $B?)$Y$?$i(B
% first time
check_span_arc_xb(ry,y,topic1(X),_,SYN1in,SYN2in,SYN1out,SYN2out,modif,topic) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),
    search(SYN1in,rank,mer,Rmer),
    unbound(Rmer),
    ( check_gr_sem_t(SEM1,$B$,(B,ID1,Fcand,Fcandout,TF),!
		;
      check_gr_sem_t(SEM1,$B$r(B,ID1,Fcand,Fcandout,TF) ),
    subst(rank(M,mer(P)),SYN1in,rank(M,mer(b)),SYN1out),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).


% 2.
% not first time
check_span_arc_xb(ry,y,topic1(X),_,SYN1in,SYN2in,SYN1out,SYN2out,modif,topic) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),
    search(SYN1in,rank,mer,Rmer),
    bound(Rmer),
    ( check_gr_sem_t(SEM1,$B$,(B,ID1,Fcand,Fcandout,TF),!
		;
      check_gr_sem_t(SEM1,$B$r(B,ID1,Fcand,Fcandout,TF) ),
    subst(rank(M,mer(P)),SYN1in,rank(M,mer(b)),SYN1out),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).


%(cat(mer(ry)),gr(mer(topic1))) * (cat(mcand(yt)),gr(mcand(case1)))
%4. ($BNc(B) $B;d$O(B $BFI$s$G$b(B
% first time
%check_span_arc_xb(ry,yt,topic1(X),_,SYN1in,SYN2in,SYN1out,SYN2out,modif,topic) :-
%    search_no_fail(SYN1in,sem(SEM1)),
%    search(SYN1in,id(ID1)),
%    search(SYN2in,frame(Fcandtmp)),
%    copy_frame(Fcandtmp,Fcand),
%    search(SYN1in,rank,mer,Rmer),
%    unbound(Rmer),
%    ( check_gr_sem_t(SEM1,$B$,(B,ID1,Fcand,Fcandout,TF),!
%		;
%      check_gr_sem_t(SEM1,$B$r(B,ID1,Fcand,Fcandout,TF) ),
%    subst(rank(M,mer(P)),SYN1in,rank(M,mer(b)),SYN1out),
%    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).

%*************************************************
%***  topic$B=hM}(B                                ***
%*** (4) rank(X) * rank(c)  --> arc(c)         ***
%***     first time$B$O(B X = valiable$B$N;~(B         ***
%***     not first time $B$O(B X /= valiable$B$N;~(B   ***
%*************************************************

check_span_arc_t(X,c,SYN1in,SYN2in,SYN1out,SYN2out,c(ID1,ID2,Arc_k,topic),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer1)),
    last(Gmer1,Gmer11),
    search_no_fail(SYN2in,gr(Gmer2)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_xc(Cmer,Ccand,Gmer11,Gmer2,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(topic1))) * (cat(mcand(y)),gr(mcand(case1)))
%1. ($BNc(B) $B;d$O(B $BFI$s$@$N$G(B
% first time
check_span_arc_xc(ry,y,topic1(X),_,SYN1in,SYN2in,SYN1out,SYN2out,modif,topic) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),
    search(SYN1in,rank,mer,Rmer),
    unbound(Rmer),
    ( check_gr_sem_t(SEM1,$B$,(B,ID1,Fcand,Fcandout,TF),!
		;
      check_gr_sem_t(SEM1,$B$r(B,ID1,Fcand,Fcandout,TF) ),
    subst(rank(M,mer(P)),SYN1in,rank(M,mer(c)),SYN1out),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).

% 2.
% not first time
check_span_arc_xc(ry,y,topic1(X),_,SYN1in,SYN2in,SYN1out,SYN2out,modif,zero_pro) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),
    search(SYN1in,rank,mer,Rmer),
    bound(Rmer),
    ( check_gr_sem_t(SEM1,$B$,(B,ID1,Fcand,Fcandout,TF),!
		;
      check_gr_sem_t(SEM1,$B$r(B,ID1,Fcand,Fcandout,TF) ),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).


%*************************************************
%***  topic$B=hM}(B                                ***
%*** (5) rank(X) * rank(d)  --> arc(d)         ***
%***     first time$B$O(B X = valiable$B$N;~(B         ***
%***     not first time $B$O(B X /= valiable$B$N;~(B   ***
%*************************************************


check_span_arc_t(X,d,SYN1in,SYN2in,SYN1out,SYN2out,d(ID1,ID2,Arc_k,topic),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer1)),
    last(Gmer1,Gmer11),
    search_no_fail(SYN2in,gr(Gmer2)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_xd(Cmer,Ccand,Gmer11,Gmer2,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(topic1))) * (cat(mcand(y)),gr(mcand(case1)))
%1. ($BNc(B) $B;d$O(B $BFI$s$@$,(B
% first time
check_span_arc_xd(ry,y,topic1(X),_,SYN1in,SYN2in,SYN1out,SYN2out,modif,topic) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),
    search(SYN1in,rank,mer,Rmer),
    unbound(Rmer),
    ( check_gr_sem_t(SEM1,$B$,(B,ID1,Fcand,Fcandout,TF),!
		;
      check_gr_sem_t(SEM1,$B$r(B,ID1,Fcand,Fcandout,TF) ),
    subst(rank(M,mer(P)),SYN1in,rank(M,mer(d)),SYN1out),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).

% 2.
% not first time
check_span_arc_xd(ry,y,topic1(X),_,SYN1in,SYN2in,SYN1out,SYN2out,modif,zero_pro) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),
    search(SYN1in,rank,mer,Rmer),
    bound(Rmer),
    ( check_gr_sem_t(SEM1,$B$,(B,ID1,Fcand,Fcandout,TF),!
		;
      check_gr_sem_t(SEM1,$B$r(B,ID1,Fcand,Fcandout,TF) ),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).

%(cat(mer(ry)),gr(mer(topic1))) * (cat(mcand(ty)),gr(mcand(case1)))
%3. ($BNc(B) $B;d$O(B $B3X@8$@$,(B
% first time
check_span_arc_xd(ry,ty,topic1(X),_,SYN1in,SYN2in,SYN1out,SYN2out,modif,topic) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),
    search(SYN1in,rank,mer,Rmer),
    unbound(Rmer),
    ( check_gr_sem_t(SEM1,$B$,(B,ID1,Fcand,Fcandout,TF),!
		;
      check_gr_sem_t(SEM1,$B$r(B,ID1,Fcand,Fcandout,TF) ),
    subst(rank(M,mer(P)),SYN1in,rank(M,mer(d)),SYN1out),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).

% 4.
% not first time
check_span_arc_xd(ry,ty,topic1(X),_,SYN1in,SYN2in,SYN1out,SYN2out,modif,zero_pro) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),
    search(SYN1in,rank,mer,Rmer),
    bound(Rmer),
    ( check_gr_sem_t(SEM1,$B$,(B,ID1,Fcand,Fcandout,TF),!
		;
      check_gr_sem_t(SEM1,$B$r(B,ID1,Fcand,Fcandout,TF) ),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%					    %%%
%%%        $B0MB84X78(B & $BEy0L4X78$N@)Ls(B        %%%
%%%					    %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% check_main$B$N0z$-?t$K$D$$$F(B                             %%%
%%% ($B0z$-?t$N0UL#$OJ#?t0MB84X78$N>l9g$HA4$/F1MM(B) 	   %%%
%%% $BBh(B1$B0z$-?t(B SYN1in  : $B78$j$NJ8@a$NF~NO9=J8>pJs(B           %%%
%%% $BBh(B2$B0z$-?t(B SYN2in  : $B<u$1$NJ8@a$NF~NO9=J8>pJs(B           %%%
%%% $BBh(B3$B0z$-?t(B SYN1out : $B78$j$NJ8@a$N=PNO9=J8>pJs(B           %%%
%%% $BBh(B4$B0z$-?t(B SYN2out : $B<u$1$NJ8@a$N=PNO9=J8>pJs(B           %%%
%%% $BBh(B5$B0z$-?t(B Arc     : $BJ8@aF1;N$r7k$V%"!<%/$N%i%s%/(B       %%%
%%% $BBh(B6$B0z$-?t(B P       : $BJ8@aF1;N$,NY$j9g$&$b$N(B(adj_ph)$B$+(B   %%%
%%%                     $BH]$+(B(ph)$B$N%U%i%0(B		   %%%


check_main(SYN1in,SYN2in,SYN1out,SYN2out,Arc,P) :-
    search(SYN1in,rank,mer,Rer),
    search_no_fail(SYN1in,gr(Gmer1)),
    Gmer1 == [topic1($B$O(B)],
    search(SYN2in,rank,mcand,Rcand),
    check_span_arc_t(Rer,Rcand,SYN1in,SYN2in,SYN1out,SYN2out,Arc,P).

check_main(SYN1in,SYN2in,SYN1out,SYN2out,Arc,P) :-
    search(SYN1in,rank,mer,Rer),
    search_no_fail(SYN1in,gr(Gmer1)),
    ( unbound(Gmer1),!
        ;
      Gmer1 \== [topic1($B$O(B)]),    
    search(SYN2in,rank,mcand,Rcand),!,
    check_span_arc(Rer,Rcand,SYN1in,SYN2in,SYN1out,SYN2out,Arc,P),!.

%%% check_span_arc$B$N0z$-?t$K$D$$$F(B           		   %%%
%%% ($B0z$-?t$N0UL#$OJ#?t0MB84X78$N>l9g$HA4$/F1MM(B) 	   %%%
%%% $BBh(B1$B0z$-?t(B Rer     : $B78$j$NJ8@a$N%i%s%/(B                 %%%
%%% $BBh(B2$B0z$-?t(B Rcand   : $B<u$1$NJ8@a$N%i%s%/(B                 %%%
%%% $BBh(B3$B0z$-?t(B SYN1in  : $B78$j$NJ8@a$NF~NO9=J8>pJs(B           %%%
%%% $BBh(B4$B0z$-?t(B SYN2in  : $B<u$1$NJ8@a$NF~NO9=J8>pJs(B           %%%
%%% $BBh(B5$B0z$-?t(B SYN1out : $B78$j$NJ8@a$N=PNO9=J8>pJs(B           %%%
%%% $BBh(B6$B0z$-?t(B SYN2out : $B<u$1$NJ8@a$N=PNO9=J8>pJs(B           %%%
%%% $BBh(B7$B0z$-?t(B Arc     : $BJ8@aF1;N$r7k$V%"!<%/$N%i%s%/(B       %%%
%%% $BBh(B8$B0z$-?t(B P       : $BJ8@aF1;N$,NY$j9g$&$b$N(B(adj_ph)$B$+(B   %%%
%%%                     $BH]$+(B(ph)$B$N%U%i%0(B		   %%%


%*************************************************
%***  (1)$B$O$$$o$f$kO"BN=$>~$r07$C$?$b$N$G$"$k(B  ***
%***  (1) rank(a1) * rank(a1)  --> arc(a)      ***
%*************************************************

check_span_arc(a1,a1,SYN1in,SYN2in,SYN1in,SYN2in,a(ID1,ID2,Arc_k,D),adj_ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer1)),
    last(Gmer1,Gmer11),
    search_no_fail(SYN2in,gr(Gmer2)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a1a1(Cmer,Ccand,Gmer11,Gmer2,Arc_k,D,adj_ph).

check_span_arc(a1,a1,SYN1in,SYN2in,SYN1in,SYN2in,a(ID1,ID2,Arc_k,D),ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer1)),
    last(Gmer1,Gmer11),
    search_no_fail(SYN2in,gr(Gmer2)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a1a1(Cmer,Ccand,Gmer11,Gmer2,Arc_k,D,ph).

%(cat(mer(rt)),gr(mer({}))) * (cat(mcand(t)),gr(mcand(case2)))
%(1) - 4. ($BNc(B) $BH~$7$$(B  $B?M$d(B
check_span_arc_a1a1(rt,t,Gmer1,[case2(X)],modif,D,_) :-
    unbound(Gmer1).

%(cat(mer(rt)),gr(mer({}))) * (cat(mcand(t)),gr(mcand({})))
%(1) - 3. ($BNc(B) $BH~$7$$(B  $B?M$,(B
check_span_arc_a1a1(rt,t,[],_,modif,of,_).

%(cat(mer(rt)),gr(mer(nil))) * (cat(mcand(t)),gr(mcand(case2)))
%(1) - 2. ($BNc(B) $B9bEY(B $B@.D94|$d(B
check_span_arc_a1a1(rt,t,nil,[case2(X)],modif,D,adj_ph).

%(cat(mer(rt)),gr(mer(nil))) * (cat(mcand(t)),gr(mcand({})))
%(1) - 1. ($BNc(B) $B9bEY(B $B@.D94|$K(B
check_span_arc_a1a1(rt,t,nil,_,modif,n,adj_ph).


%(cat(mer(rt)),gr(mer(case2))) * (cat(mcand(t)),gr(mcand(case2)))
%(1) - 6. ($BNc(B) $BK\$H(B $B4y$H(B
check_span_arc_a1a1(rt,t,case2(X),[case2(Y)],coord,D,_) :-
    X == Y.
    
%(cat(mer(rt)),gr(mer(case2))) * (cat(mcand(t)),gr(mcand({})))
%(1) - 5. ($BNc(B) $BK\$H(B $B4y$,(B
check_span_arc_a1a1(rt,t,case2(X),_,coord,D,_).

%(cat(mer(rt)),gr(mer(case4))) * (cat(mcand(t)),gr(mcand(case2)))
%(1) - 8. ($BNc(B) $BK\$N(B $B?'$H(B
check_span_arc_a1a1(rt,t,case4(X),[case2(Y)],modif,D,_).

%(cat(mer(rt)),gr(mer(case4))) * (cat(mcand(t)),gr(mcand({})))
%(1) - 7. ($BNc(B) $BK\$N(B $B?'$,(B
check_span_arc_a1a1(rt,t,case4(X),_,modif,n,_).

%(cat(mer(rt)),gr(mer(case5))) * (cat(mcand(t)),gr(mcand(case2)))
%(1) - 10. ($BNc(B) $BK\$J$I$N(B $B?'$H(B
check_span_arc_a1a1(rt,t,case5(X),[case2(Y)],coord,D,_).

%(cat(mer(rt)),gr(mer(case5))) * (cat(mcand(t)),gr(mcand({})))
%(1) - 9. ($BNc(B) $BH`$K$H$C$F(B $BK\$,(B
check_span_arc_a1a1(rt,t,case5(X),_,modif,D,_).


%*************************************************
%***  (2)$B$O$$$o$f$kO"MQ=$>~$r07$C$?$b$N$G$"$k(B  ***
%***  $B$J$*(B(2)$B0J9_$9$Y$FO"MQ=$>~$r07$C$?$b$N$G(B  ***
%***  $B$"$k(B				       ***
%*** (2)  rank(a1) * rank(d)  --> arc(a)       ***
%*************************************************

check_span_arc(a1,d,SYN1in,SYN2in,SYN1in,SYN2in,a(ID1,ID2,Arc_k,D),P) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer1)),
    last(Gmer1,Gmer11),
    search_no_fail(SYN2in,gr(Gmer2)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a1d(Cmer,Ccand,Gmer11,Gmer2,Arc_k,D).

%(cat(mer(rt)),gr(mer(nil))) * (cat(mcand(ty)),gr(mcand(case1)))
%(2) - 1. ($BNc(B) $B9bEY(B $B@.D94|$@(B
check_span_arc_a1d(rt,ty,nil,_,modif,D).

%(cat(mer(rt)),gr(mer(case2))) * (cat(mcand(ty)),gr(mcand(case1)))
%(2) - 3. ($BNc(B) $BH`$H(B $B65<<$@(B
check_span_arc_a1d(rt,ty,case2(X),_,modif,ana).

%(cat(mer(rt)),gr(mer(case4))) * (cat(mcand(ty)),gr(mcand(case1)))
%(2) - 4. ($BNc(B) $B:G9b$N(B $BN($@(B
check_span_arc_a1d(rt,ty,case4,_,modif,of).


%(cat(mer(rt)),gr(mer(case5))) * (cat(mcand(ty)),gr(mcand(case1)))
%(2) - 5. ($BNc(B) $B?t3X$H$$$&(B $B2JL\$G$"$k(B
check_span_arc_a1d(rt,ty,case5(X),_,of,D).
    
%(cat(mer(rt)),gr(mer({}))) * (cat(mcand(ty)),gr(mcand(case1)))
%(2) - 2. ($BNc(B) $BH~$7$$(B $B7J?'$G$"$k(B
check_span_arc_a1d(rt,ty,_,_,modif,of) :-
    unbound(Gmer1).


%**********************************************
%***  (3)  rank(a2) * rank(a2)  --> arc(a)  ***
%**********************************************

check_span_arc(a2,a2,SYN1in,SYN2in,SYN1in,SYN2in,a(ID1,ID2,Arc_k,D),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search(SYN1in,gr(Gmer)),
    search(SYN2in,gr(Gcand)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a2a2(Cmer,Ccand,Gmer,Gcand,Arc_k,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(yf)),gr(mcand(nil)))
%(3) - 1. ($BNc(B) $B$b$C$H(B $B$f$C$/$j(B
check_span_arc_a2a2(ry,yf,[nil],[nil],modif,D).



%**********************************************
%***  (4)  rank(a2) * rank(a3)  --> arc(a)  ***
%**********************************************

check_span_arc(a2,a3,SYN1in,SYN2in,SYN1in,SYN2in,a(ID1,ID2,Arc_k,D),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search(SYN1in,gr(Gmer)),
    search(SYN2in,gr(Gcand)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a2a3(Cmer,Ccand,Gmer,Gcand,Arc_k,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(y)),gr(mcand(case2)))
%(4) - 1. ($BNc(B) $B$b$C$H(B $B?)$Y$?$j(B
check_span_arc_a2a3(ry,y,[nil],[case2(Y)],modif,D).


%**********************************************
%***  (5)  rank(a2) * rank(a4)  --> arc(a)  ***
%**********************************************


check_span_arc(a2,a4,SYN1in,SYN2in,SYN1in,SYN2in,a(ID1,ID2,Arc_k,D),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search(SYN1in,gr(Gmer)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a2a4(Cmer,Ccand,Gmer,_,Arc_k,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(y)),gr(mcand(case1)))
%(5) - 1. ($BNc(B) $B$b$C$H(B $B?)$Y$J$,$i(B
check_span_arc_a2a4(ry,y,[nil],_,modif,D).

%**********************************************
%***  (6)  rank(a2) * rank(b)  --> arc(a)   ***
%**********************************************

check_span_arc(a2,b,SYN1in,SYN2in,SYN1in,SYN2in,a(ID1,ID2,Arc_k,D),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search(SYN1in,gr(Gmer)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a2b(Cmer,Ccand,Gmer,_,Arc_k,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(y)),gr(mcand(case1)))
%(6) - 1. ($BNc(B) $B$b$C$H(B $B?)$Y$?$i(B
check_span_arc_a2b(ry,y,[nil],_,modif,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(yt)),gr(mcand(case1)))
%(6) - 2. ($BNc(B) $B$b$C$H(B $B?)$Y$k$3$H$,(B
check_span_arc_a2b(ry,yt,[nil],_,modif,umekomi).

%**********************************************
%***  (7)  rank(a2) * rank(c)  --> arc(a)   ***
%**********************************************

check_span_arc(a2,c,SYN1in,SYN2in,SYN1in,SYN2in,a(ID1,ID2,Arc_k,D),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search(SYN1in,gr(Gmer)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a2c(Cmer,Ccand,Gmer,_,Arc_k,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(y)),gr(mcand(case1)))
%(7) - 1. ($BNc(B) $B$f$C$/$j(B $B?)$Y$k$N$K(B
check_span_arc_a2c(ry,y,[nil],_,modif,D).



%**********************************************
%***  (8)  rank(a2) * rank(d)  --> arc(a)   ***
%**********************************************

check_span_arc(a2,d,SYN1in,SYN2in,SYN1in,SYN2in,a(ID1,ID2,Arc_k,D),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search(SYN1in,gr(Gmer)),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a2d(Cmer,Ccand,Gmer,_,Arc_k,D).


%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(y)),gr(mcand(case1)))
%(8) - 1. ($BNc(B) $B$f$C$/$j(B $B?)$Y$k$,(B
check_span_arc_a2d(ry,y,[nil],_,modif,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(ty)),gr(mcand(case1)))
%(8) - 2. ($BNc(B) $B$+$J$j(B $B9b2A$@$,(B
check_span_arc_a2d(ry,ty,[nil],_,modif,D).


%**********************************************
%***  (9) rank(a3) * rank(a3)  --> arc(a)   ***
%**********************************************

check_span_arc(a3,a3,SYN1in,SYN2in,SYN1out,SYN2out,a(ID1,ID2,Arc_k,D),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    first1(Gmer,Gmer_l),
    first1(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a3a3(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(topic2))) * (cat(mcand(y)),gr(mcand(case2)))
%(9) - 2. ($BNc(B) $B;d$b(B $B?)$Y$?$j(B
check_span_arc_a3a3(ry,y,topic2(X),case2(Y),SYN1in,SYN2in,SYN1in,SYN2in,modif,topic).

%(cat(mer(ry)),gr(mer(case1))) * (cat(mcand(y)),gr(mcand(case2)))
%(9) - 3. ($BNc(B) $B;d$,(B $B?)$Y$?$j(B
check_span_arc_a3a3(ry,y,case1(X),case2(Y),SYN1in,SYN2in,SYN1in,SYN2out,modif,hissu) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),!,
    check_gr_sem(SEM1,X,ID1,Fcand,Fcandout,TF),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).


%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case2)))
%(9) - 5. ($BNc(B) $BBP:v$H$7$F$O(B $B8@$C$?$j(B
%(9) - 6. ($BNc(B) ($B$O$d$/(B) $BMh$k$H$$$$(B $BCY$l$?$j(B ($B$9$k(B)
check_span_arc_a3a3(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).


%(cat(mer(ry)),gr(mer(case2))) * (cat(mcand(y)),gr(mcand(case2)))
%(9) - 4. ($BNc(B) $B?)$Y$?$j(B $B0{$s$@$j(B
check_span_arc_a3a3(ry,y,case2(X),case2(Y),SYN1in,SYN2in,SYN1in,SYN2in,coord,dousa) :-
    X == Y.

%(cat(mer(ry)),gr(mer(nilnil))) * (cat(mcand(y)),gr(mcand(case2)))
%(9) - 1. ($BNc(B) $B$-$l$$$K(B $B@v$C$?$j(B
check_span_arc_a3a3(ry,y,_,case2(Y),SYN1in,SYN2in,SYN1in,SYN2in,modif,youtai).



%**********************************************
%***  (10) rank(a3) * rank(a4)  --> arc(a)  ***
%**********************************************

check_span_arc(a3,a4,SYN1in,SYN2in,SYN1out,SYN2out,a(ID1,ID2,Arc_k,D),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    first1(Gcand,Gcand_l),
    first1(Gmer,Gmer_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a3a4(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(topic2))) * (cat(mcand(y)),gr(mcand(case1)))
%(10) - 2. ($BNc(B) $B;d$b(B $B?)$Y$J$,$i(B
check_span_arc_a3a4(ry,y,topic2(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,topic).


%(cat(mer(ry)),gr(mer(case1))) * (cat(mcand(y)),gr(mcand(case1)))
%(10) - 3. ($BNc(B) $B;d$,(B $B?)$Y$J$,$i(B
check_span_arc_a3a4(ry,y,case1(X),_,SYN1in,SYN2in,SYN1in,SYN2out,modif,hissu) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),!,
    check_gr_sem(SEM1,X,ID1,Fcand,Fcandout,TF),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).


%(cat(mer(ry)),gr(mer(case2))) * (cat(mcand(y)),gr(mcand(case1)))
%(10) - 4. ($BNc(B) $B?)$Y$?$j(B $B0{$_$J$,$i(B
check_span_arc_a3a4(ry,y,case2(X),_,SYN1in,SYN2in,SYN1in,SYN2in,coord,dousa).


%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(10) - 5. ($BNc(B) $BBP:v$H$7$F$O(B $B9T$C$?$^$^(B
%(10) - 6. ($BNc(B) ($B$O$d$/(B) $BMh$k$H$$$$(B $B9T$C$?$^$^(B ($B5"$C$F$3$J$$(B)
check_span_arc_a3a4(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).



%(cat(mer(ry)),gr(mer(nilnil))) * (cat(mcand(y)),gr(mcand(case1)))
%(10) - 1. ($BNc(B) $B$-$l$$$K(B $B@v$C$?$^$^(B
check_span_arc_a3a4(ry,y,_,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).


%**********************************************
%***  (11) rank(a3) * rank(b)  --> arc(a)   ***
%**********************************************

check_span_arc(a3,b,SYN1in,SYN2in,SYN1out,SYN2out,a(ID1,ID2,Arc_k,D),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    first1(Gmer,Gmer_l),
    first1(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a3b(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).


%(cat(mer(ry)),gr(mer(case1))) * (cat(mcand(y)),gr(mcand(case1)))
%(11) - 5. ($BNc(B) $B;d$,(B $B?)$Y$?$i(B
check_span_arc_a3b(ry,y,case1(X),_,SYN1in,SYN2in,SYN1in,SYN2out,modif,hissu) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),!,
    check_gr_sem(SEM1,X,ID1,Fcand,Fcandout,TF),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).


%(cat(mer(ry)),gr(mer(case1))) * (cat(mcand(yt)),gr(mcand(case1)))
%(11) - 6. ($BNc(B) $B$j$s$4$r(B $B?)$Y$k$3$H$,(B
check_span_arc_a3b(ry,yt,case1(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,hissu_umekomi) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),!,
    check_gr_sem(SEM1,X,ID1,Fcand,Fcandout,TF),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).


%(cat(mer(ry)),gr(mer(topic2))) * (cat(mcand(y)),gr(mcand(case1)))
%(11) - 3. ($BNc(B) $B;d$b(B $B?)$Y$?$i(B
check_span_arc_a3b(ry,y,topic2(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,topic).

%(cat(mer(ry)),gr(mer(topic2))) * (cat(mcand(yt)),gr(mcand(case1)))
%(11) - 4. ($BNc(B) $B;d$b(B $B?)$Y$k$3$H$,(B
check_span_arc_a3b(ry,yt,topic2(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,topic_umekomi).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(11) - 9.  ($BNc(B) $BBP:v$H$7$F(B $B?)$Y$?$J$i(B
%(11) - 11. ($BNc(B) $BMh$k$H$$$$(B ($B0lEY(B) $BMh$?$J$i(B
check_span_arc_a3b(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(yt)),gr(mcand(case1)))
%(11) - 10. ($BNc(B) $B86B'$H$7$F(B $B?)$Y$k$3$H$J$i$P(B
%(11) - 12. ($BNc(B) ($B8$$H$$$$(B) $BG-$H$$$$(B $BAv$k$3$H$J$i$P(B
check_span_arc_a3b(ry,yt,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case2))) * (cat(mcand(y)),gr(mcand(case1)))
%(11) - 7. ($BNc(B) $BJb$$$?$j(B $B$7$?$i(B
check_span_arc_a3b(ry,y,case2(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case2))) * (cat(mcand(yt)),gr(mcand(case1)))
%(11) - 8. ($BNc(B) $B?)$Y$?$j(B $B0{$`$3$H$,(B
check_span_arc_a3b(ry,yt,case2(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(yt)),gr(mcand(case1)))
%(11) - 1. ($BNc(B) $B$O$d$/(B $B?)$Y$k$3$H$,(B
check_span_arc_a3b(ry,yt,_,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,umekomi).

%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(y)),gr(mcand(case1)))
%(11) - 2. ($BNc(B) $B$O$d$/(B $B?)$Y$?$i(B
check_span_arc_a3b(ry,y,_,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).


%**********************************************
%***  (12) rank(a3) * rank(c)  --> arc(a)   ***
%**********************************************

check_span_arc(a3,c,SYN1in,SYN2in,SYN1out,SYN2out,a(ID1,ID2,Arc_k,D),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    first1(Gmer,Gmer_l),
    first1(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a3c(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).


%(cat(mer(ry)),gr(mer(case1))) * (cat(mcand(y)),gr(mcand(case1)))
%(12) - 3. ($BNc(B) $B;d$,(B $B?)$Y$k$N$K(B
check_span_arc_a3c(ry,y,case1(X),_,SYN1in,SYN2in,SYN1out,SYN2out,modif,hissu) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),!,
    check_gr_sem(SEM1,X,ID1,Fcand,Fcandout,TF),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).


%(cat(mer(ry)),gr(mer(topic2))) * (cat(mcand(y)),gr(mcand(case1)))
%(12) - 2. ($BNc(B) $B;d$b(B $B?)$Y$k$N$K(B
check_span_arc_a3c(ry,y,topic2(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,topic).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(12) - 5. ($BNc(B) $B86B'$H$7$F(B $B?)$Y$?$N$G(B
%(12) - 6. ($BNc(B) $B?)$Y$k$H$$$$(B $B?)$Y$?$N$G(B
check_span_arc_a3c(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).


%(cat(mer(ry)),gr(mer(case2))) * (cat(mcand(y)),gr(mcand(case1)))
%(12) - 4. ($BNc(B) $BJb$$$?$j(B $B$9$k$N$K(B
check_span_arc_a3c(ry,y,case2(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(y)),gr(mcand(case1)))
%(12) - 1. ($BNc(B) $B$O$d$/(B $B?)$Y$k$N$K(B
check_span_arc_a3c(ry,y,_,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).


%***********************************************
%*** $B=hM}(B(13)$B$G$OJ8@aF1;N$,NY$j9g$&$b$N$+(B    ***
%*** $BH]$+$GD%$i$l$k%"!<%/$N%i%s%/$K0c$$$,(B    ***
%*** $B$"$k$?$a%U%i%0(Badj_ph$B$H(Bph$B$G6hJL$9$k(B      ***
%***  (13)  rank(a3) * rank(d)  --> arc(a)   ***
%***********************************************

%*** $BJ8@aF1;N$,NY$j9g$&$b$N$N>l9g(B(adj_ph)
check_span_arc(a3,d,SYN1in,SYN2in,SYN1out,SYN2out,a(ID1,ID2,Arc_k,D),adj_ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    first1(Gmer,Gmer_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a3d(Cmer,Ccand,Gmer_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(topic2))) * (cat(mcand(y)),gr(mcand(case1)))
%(13) - 3. ($BNc(B) $B;d$b(B $B?)$Y$k$,(B
check_span_arc_a3d(ry,y,topic2(X),SYN1in,SYN2in,SYN1in,SYN2in,modif,topic).

%(cat(mer(ry)),gr(mer(topic2))) * (cat(mcand(ty)),gr(mcand(case1)))
%(13) - 4. ($BNc(B) $B;d$b(B $B3X@8$@$,(B
check_span_arc_a3d(ry,ty,topic2(X),SYN1in,SYN2in,SYN1in,SYN2in,modif,topic_da).

%(cat(mer(ry)),gr(mer(case1))) * (cat(mcand(y)),gr(mcand(case1)))
%(13) - 5. ($BNc(B) $B$j$s$4$r(B $B?)$Y$k$,(B
check_span_arc_a3d(ry,y,case1(X),SYN1in,SYN2in,SYN1in,SYN2out,modif,hissu) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),!,
    check_gr_sem(SEM1,X,ID1,Fcand,Fcandout,TF),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).

%(cat(mer(ry)),gr(mer(case1))) * (cat(mcand(ty)),gr(mcand(case1)))
%(13) - 6. ($BNc(B) $B;d$,(B $BC4Ev$@$,(B
check_span_arc_a3d(ry,ty,case1(X),SYN1in,SYN2in,SYN1in,SYN2out,modif,da) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),!,
    check_gr_sem(SEM1,X,ID1,Fcand,Fcandout,TF),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(13) - 9.  ($BNc(B) $BBP:v$H$7$F(B $BEA$($?$1$l$I(B
%(13) - 11. ($BNc(B) $B8F$V$H$$$$(B $B8F$s$@$1$l$I(B
check_span_arc_a3d(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(ty)),gr(mcand(case1)))
%(13) - 10. ($BNc(B) $B86B'$H$7$F(B $B3X@8$@$,(B
%(13) - 12. ($BNc(B) ($BH`=w$H$$$$(B) $BH`$H$$$$(B $B3X@8$@$,(B
check_span_arc_a3d(ry,ty,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case2))) * (cat(mcand(y)),gr(mcand(case1)))
%(13) - 7. ($BNc(B) $BFI$s$@$j(B $B=q$$$?$,(B
check_span_arc_a3d(ry,y,case2(X),SYN1in,SYN2in,SYN1in,SYN2in,modif,dousa).

%(cat(mer(ry)),gr(mer(case2))) * (cat(mcand(ty)),gr(mcand(case1)))
%(13) - 8. ($BNc(B) $B0B$+$C$?$j(B $B0lN.IJ$@$,(B
check_span_arc_a3d(ry,ty,case2(X),SYN1in,SYN2in,SYN1in,SYN2in,modif,dousa).

%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(y)),gr(mcand(case1)))
%(13) - 1. ($BNc(B) $B$O$d$/(B $B?)$Y$k$,(B
check_span_arc_a3d(ry,y,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,_).

%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(ty)),gr(mcand(case1)))
%(13) - 2. ($BNc(B) $B@E$+$J(B $B65<<$@$,(B
check_span_arc_a3d(ry,ty,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,_).

%*** $BJ8@aF1;N$,N%$l$?J8@aF1;N$N>l9g(B(ph)
check_span_arc(a3,d,SYN1in,SYN2in,SYN1out,SYN2out,a(ID1,ID2,Arc_k,D),ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    first1(Gmer,Gmer_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a3d(Cmer,Ccand,Gmer_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D,ph).


%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(13) - 9.  ($BNc(B) $BBP:v$H$7$F(B $BEA$($?$1$l$I(B
%(13) - 11. ($BNc(B) $B8F$V$H$$$$(B $B8F$s$@$1$l$I(B
check_span_arc_a3d(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,ph).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(ty)),gr(mcand(case1)))
%(13) - 10. ($BNc(B) $B86B'$H$7$F(B $B3X@8$@$,(B
%(13) - 12. ($BNc(B) ($BH`=w$H$$$$(B) $BH`$H$$$$(B $B3X@8$@$,(B
check_span_arc_a3d(ry,ty,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,ph).

%(cat(mer(ry)),gr(mer(topic2))) * (cat(mcand(y)),gr(mcand(case1)))
%(13) - 3. ($BNc(B) $B;d$b(B $B?)$Y$k$,(B
check_span_arc_a3d(ry,y,topic2(X),SYN1in,SYN2in,SYN1in,SYN2in,modif,topic,ph).

%(cat(mer(ry)),gr(mer(topic2))) * (cat(mcand(ty)),gr(mcand(case1)))
%(13) - 4. ($BNc(B) $B;d$b(B $B3X@8$@$,(B
check_span_arc_a3d(ry,ty,topic2(X),SYN1in,SYN2in,SYN1in,SYN2in,modif,topic_da,ph).

%(cat(mer(ry)),gr(mer(case1))) * (cat(mcand(y)),gr(mcand(case1)))
%(13) - 5. ($BNc(B) $B$j$s$4$r(B $B?)$Y$k$,(B
check_span_arc_a3d(ry,y,case1(X),SYN1in,SYN2in,SYN1in,SYN2out,modif,hissu,ph) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),!,
    check_gr_sem(SEM1,X,ID1,Fcand,Fcandout,TF),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).


%(cat(mer(ry)),gr(mer(case1))) * (cat(mcand(ty)),gr(mcand(case1)))
%(13) - 6. ($BNc(B) $B;d$,(B $BC4Ev$@$,(B
check_span_arc_a3d(ry,ty,case1(X),SYN1in,SYN2in,SYN1in,SYN2out,modif,da,ph) :-
    search_no_fail(SYN1in,sem(SEM1)),
    search(SYN1in,id(ID1)),
    search(SYN2in,frame(Fcandtmp)),
    copy_frame(Fcandtmp,Fcand),!,
    check_gr_sem(SEM1,X,ID1,Fcand,Fcandout,TF),
    subst(frame(Fcandtmp),SYN2in,frame(Fcandout),SYN2out).


%(cat(mer(ry)),gr(mer(case2))) * (cat(mcand(y)),gr(mcand(case1)))
%(13) - 7. ($BNc(B) $BFI$s$@$j(B $B=q$$$?$,(B
check_span_arc_a3d(ry,y,case2(X),SYN1in,SYN2in,SYN1in,SYN2in,modif,dousa,ph).

%(cat(mer(ry)),gr(mer(case2))) * (cat(mcand(ty)),gr(mcand(case1)))
%(13) - 8. ($BNc(B) $B0B$+$C$?$j(B $B0lN.IJ$@$,(B
check_span_arc_a3d(ry,ty,case2(X),SYN1in,SYN2in,SYN1in,SYN2in,modif,dousa,ph).

%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(y)),gr(mcand(case1)))
%(13) - 1. ($BNc(B) $B$O$d$/(B $B?)$Y$k$,(B
%check_span_arc_a3d(ry,y,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,_,ph).

%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(ty)),gr(mcand(case1)))
%(13) - 2. ($BNc(B) $B@E$+$J(B $B65<<$@$,(B
%check_span_arc_a3d(ry,ty,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,_,ph).

%difference adj_ph & ph
check_span_arc(a3,d,SYN1in,SYN2in,SYN1out,SYN2out,d(ID1,ID2,Arc_k,D),ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    last(Gmer,Gmer_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a3d_ph(Cmer,Ccand,Gmer_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D,ph).


%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(y)),gr(mcand(case1)))
%(13) - 1. ($BNc(B) $B@E$+$G(B $B$-$l$$$@$,(B
check_span_arc_a3d_ph(ry,y,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,ph).

%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(ty)),gr(mcand(case1)))
%(13) - 2. ($BNc(B) $B@E$+$J(B $B65<<$@$,(B
check_span_arc_a3d_ph(ry,ty,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,ph).


%***********************************************
%***  (14) rank(a4) * rank(a4)  --> arc(a)   ***
%***********************************************

check_span_arc(a4,a4,SYN1in,SYN2in,SYN1out,SYN2out,a(ID1,ID2,Arc_k,D),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a4a4(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(y)),gr(mcand(case1)))
%(14) - 1. ($BNc(B) $BN)$C$?$^$^(B $B?)$Y$J$,$i(B
%(14) - 2. ($BNc(B) $BN)$D$H(B $B?)$Y$J$,$i(B
check_span_arc_a4a4(ry,y,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(14) - 3. ($BNc(B)  $BBP:v$H$7$?$^$^(B $BJ]N1$7$J$,$i(B
%(14) - 4. ($BNc(B)  $BBP:v$H$9$k$H(B $B7h$a$J$,$i(B
check_span_arc_a4a4(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).


%***********************************************
%*** $B=hM}(B(15)$B$G$OJ8@aF1;N$,NY$j9g$&$b$N$+(B    ***
%*** $BH]$+$GD%$i$l$k%"!<%/$N%i%s%/$K0c$$$,(B    ***
%*** $B$"$k$?$a%U%i%0(Badj_ph$B$H(Bph$B$G6hJL$9$k(B      ***
%***  (15)  rank(a4) * rank(b)  --> arc(a)   ***
%***********************************************

%*** $BJ8@aF1;N$,NY$j9g$&$b$N$N>l9g(B(adj_ph)
check_span_arc(a4,b,SYN1in,SYN2in,SYN1out,SYN2out,a(ID1,ID2,Arc_k,D),adj_ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a4b(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%*** $BJ8@aF1;N$,N%$l$?J8@aF1;N$N>l9g(B(ph)
check_span_arc(a4,b,SYN1in,SYN2in,SYN1out,SYN2out,b(ID1,ID2,Arc_k,D),ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a4b(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(y)),gr(mcand(case1)))
%(15) - 1. ($BNc(B) $B?)$Y$J$,$i(B $BFI$s$@$i(B
%(15) - 3. ($BNc(B) $B?)$Y$F$+$i(B $B=P3]$1$?$i(B  
check_span_arc_a4b(ry,y,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(yt)),gr(mcand(case1)))
%(15) - 2. ($BNc(B) $B?)$Y$J$,$i(B $BFI$`$3$H$,(B
%(15) - 4. ($BNc(B) $B?)$Y$F$+$i(B $B=P3]$1$k$3$H$,(B
check_span_arc_a4b(ry,yt,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,umekomi).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(15) - 5. ($BNc(B) $BJb$$$?$*$+$2$G(B $B2sI|$7$?$?$a$K(B
%(15) - 7. ($BNc(B)  $BFI$`$=$P$+$i(B  $B3P$($?$?$a$K(B
check_span_arc_a4b(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(yt)),gr(mcand(case1)))
%(15) - 6. ($BNc(B)  $BJb$$$?$*$+$2$G(B $B2sI|$9$k$3$H$,(B
%(15) - 8. ($BNc(B)  $BFI$`$=$P$+$i(B $B3P$($k$3$H$,(B
check_span_arc_a4b(ry,yt,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,umekomi).


%***********************************************
%*** $B=hM}(B(16)$B$G$OJ8@aF1;N$,NY$j9g$&$b$N$+(B    ***
%*** $BH]$+$GD%$i$l$k%"!<%/$N%i%s%/$K0c$$$,(B    ***
%*** $B$"$k$?$a%U%i%0(Badj_ph$B$H(Bph$B$G6hJL$9$k(B      ***
%***  (16) rank(a4) * rank(c)  --> arc(a)    ***
%***********************************************

%*** $BJ8@aF1;N$,NY$j9g$&$b$N$N>l9g(B(adj_ph)
check_span_arc(a4,c,SYN1in,SYN2in,SYN1out,SYN2out,a(ID1,ID2,Arc_k,D),adj_ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a4c(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%*** $BJ8@aF1;N$,N%$l$?J8@aF1;N$N>l9g(B(ph)
check_span_arc(a4,c,SYN1in,SYN2in,SYN1out,SYN2out,b(ID1,ID2,Arc_k,D),ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a4c(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(y)),gr(mcand(case1)))
%(16) - 1. ($BNc(B)  $B=q$-$J$,$i(B $B3P$($k$N$K(B
%(16) - 2. ($BNc(B)  $B=q$/$H(B $B3P$($k$N$K(B
check_span_arc_a4c(ry,y,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).


%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(16) - 3. ($BNc(B)  $BFI$`$=$P$+$i(B $B3P$($k$N$K(B
%(16) - 4. ($BNc(B)  $BFI$s$@$*$+$2$G(B $B3P$($?$N$K(B
check_span_arc_a4c(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).


%***********************************************
%*** $B=hM}(B(17)$B$G$OJ8@aF1;N$,NY$j9g$&$b$N$+(B    ***
%*** $BH]$+$GD%$i$l$k%"!<%/$N%i%s%/$K0c$$$,(B    ***
%*** $B$"$k$?$a%U%i%0(Badj_ph$B$H(Bph$B$G6hJL$9$k(B      ***
%***  (17) rank(a4) * rank(d)  --> arc(a)   ***
%***********************************************

%*** $BJ8@aF1;N$,NY$j9g$&$b$N$N>l9g(B(adj_ph)
check_span_arc(a4,d,SYN1in,SYN2in,SYN1out,SYN2out,a(ID1,ID2,Arc_k,D),adj_ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a4d(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%*** $BJ8@aF1;N$,N%$l$?J8@aF1;N$N>l9g(B(ph)
check_span_arc(a4,d,SYN1in,SYN2in,SYN1out,SYN2out,d(ID1,ID2,Arc_k,D),ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_a4d(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(y)),gr(mcand(case1)))
%(17) - 1. ($BNc(B) $B=q$-$J$,$i(B $B3P$($?$,(B
%(17) - 3. ($BNc(B) $B=q$/$H(B $B3P$($?$,(B
check_span_arc_a4d(ry,y,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(ty)),gr(mcand(case1)))
%(17) - 2. ($BNc(B)  $BF/$-$J$,$i$b(B $B3X@8$@$,(B
%(17) - 4. ($BNc(B)  $B8+$k$H(B $B3X@8$@$,(B
check_span_arc_a4d(ry,ty,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(17) - 5. ($BNc(B)  $BFI$s$@$9$($K(B $B3P$($?$,(B 
%(17) - 7. ($BNc(B)  $BFI$`$=$P$+$i(B $B3P$($?$,(B 
check_span_arc_a4d(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(ty)),gr(mcand(case1)))
%(17) - 6. ($BNc(B)  $B0B$$$+$H$$$($P(B $B0B2A$@$,(B
%(17) - 8. ($BNc(B)  $B0B$$$*$+$2$G(B   $B%;!<%kIJ$@$,(B
check_span_arc_a4d(ry,ty,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).


%********************************************* 
%***  (18) rank(b) * rank(b)  --> arc(b)   ***
%*********************************************

check_span_arc(b,b,SYN1in,SYN2in,SYN1out,SYN2out,b(ID1,ID2,Arc_k,D),_) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_bb(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mera(nil))) * (cat(mcand(y)),gr(mcand(case1)))
%(18) - 1. ($BNc(B) $B5^$$$F(B $B?)$Y$?$?$a$K(B
check_span_arc_bb(ry,y,nil,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(yt)),gr(mcand(case1)))
%(18) - 2. ($BNc(B) $B5^$$$F(B $B?)$Y$k$3$H$,(B
check_span_arc_bb(ry,yt,nil,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,umekomi).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(y)),gr(mcand(case1)))
%(18) - 5. ($BNc(B) $BFI$a$P(B     $BM}2r$G$-$k$?$a$K(B
%(18) - 7. ($BNc(B) $BFI$s$G$b(B   $BM}2r$G$-$k$?$a$K(B
%(18) - 9. ($BNc(B) $BFI$s$@$H$-(B $BM}2r$G$-$k$?$a$K(B
check_span_arc_bb(ry,y,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(yt)),gr(mcand(case1)))
%(18) - 6.  ($BNc(B) $BFI$a$P(B     $B=q$/$3$H$,(B
%(18) - 8.  ($BNc(B) $BFI$s$G$b(B   $B=q$/$3$H$,(B
%(18) - 10. ($BNc(B) $BFI$s$@$H$-(B $B=q$/$3$H$,(B
check_span_arc_bb(ry,yt,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,umekomi).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(18) - 11. ($BNc(B) $BFI$`$H$7$?$i(B $BM}2r$G$-$k$?$a$K(B
%(18) - 13. ($BNc(B) $BFI$`$K$7$m(B   $BM}2r$G$-$k$?$a$K(B
%(18) - 15. ($BNc(B) $BFI$`$H$9$k$H(B $BM}2r$G$-$k$?$a$K(B
%(18) - 17. ($BNc(B) $BFI$`$+$7$i$H(B $B9M$($?$,(B
check_span_arc_bb(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(yt)),gr(mcand(case1)))
%(18) - 12. ($BNc(B) $BFI$`$H$7$?$i(B $BM}2r$9$k$3$H$,(B
%(18) - 14. ($BNc(B) $BFI$`$K$7$m(B   $BM}2r$9$k$3$H$,(B
%(18) - 16. ($BNc(B) $BFI$`$H$9$k$H(B $BM}2r$9$k$3$H$,(B
%(18) - 18. ($BNc(B) $BFI$`$+$7$i$H(B $B9M$($k$3$H$,(B
check_span_arc_bb(ry,yt,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case6))) * (cat(mcand(y)),gr(mcand(case1)))
%(18) - 19. ($BNc(B) $BFI$`$+(B $B$o$+$i$J$$$?$a$K(B
check_span_arc_bb(ry,y,case6(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case6))) * (cat(mcand(yt)),gr(mcand(case1)))
%(18) - 20. ($BNc(B) $BMh$k$+(B $BCN$k$3$H$,(B
check_span_arc_bb(ry,yt,case6(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).


%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(y)),gr(mcand(case1)))
%(18) - 3. ($BNc(B) $BFI$_(B $B3P$($k$?$a$K(B
check_span_arc_bb(ry,y,_,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(yt)),gr(mcand(case1)))
%(18) - 4. ($BNc(B) $BFI$_(B $B3P$($k$3$H$,(B
check_span_arc_bb(ry,yt,_,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,umekomi).



%***********************************************
%*** $B=hM}(B(19)$B$G$OJ8@aF1;N$,NY$j9g$&$b$N$+(B    ***
%*** $BH]$+$GD%$i$l$k%"!<%/$N%i%s%/$K0c$$$,(B    ***
%*** $B$"$k$?$a%U%i%0(Badj_ph$B$H(Bph$B$G6hJL$9$k(B      ***
%***  (19) rank(b) * rank(c)  --> arc(b)     ***
%***********************************************

%*** $BJ8@aF1;N$,NY$j9g$&$b$N$N>l9g(B(adj_ph)
check_span_arc(b,c,SYN1in,SYN2in,SYN1out,SYN2out,b(ID1,ID2,Arc_k,D),adj_ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_bc(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D,adj_ph).

%*** $BJ8@aF1;N$,N%$l$?J8@aF1;N$N>l9g(B(ph)
% adj_ph$B$H(Bph$B$H$,JQ$o$i$J$$$b$N(B
check_span_arc(b,c,SYN1in,SYN2in,SYN1out,SYN2out,b(ID1,ID2,Arc_k,D),ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_bc_ph(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(y)),gr(mcand(case1)))
%(19) - 1.($BNc(B) $B5^$$$F(B $B?)$Y$k$N$K(B
check_span_arc_bc_ph(ry,y,nil,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%*** $BJ8@aF1;N$,N%$l$?J8@aF1;N$N>l9g(B(ph)
check_span_arc(b,c,SYN1in,SYN2in,SYN1out,SYN2out,c(ID1,ID2,Arc_k,D),ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_bc(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D,ph).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(y)),gr(mcand(case1)))
%(19) - 1. ($BNc(B) $B5^$$$F(B $B?)$Y$k$N$K(B
check_span_arc_bc(ry,y,nil,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,adj_ph).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(y)),gr(mcand(case1)))
%(19) - 3. ($BNc(B) $BFI$a$P(B     $BM}2r$G$-$k$N$K(B
%(19) - 4. ($BNc(B) $BFI$s$G$b(B   $BM}2r$G$-$k$N$K(B
%(19) - 5. ($BNc(B) $BFI$s$@$H$-(B $BM}2r$G$-$k$N$K(B
check_span_arc_bc(ry,y,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).


%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(19) - 6. ($BNc(B) $BFI$`$H$7$?$i(B   $BM}2r$G$-$k$N$K(B
%(19) - 7. ($BNc(B) $BFI$`$K$7$m(B     $BM}2r$G$-$k$N$K(B
%(19) - 8. ($BNc(B) $BFI$`$H$9$k$H(B   $BM}2r$G$-$k$N$K(B
%(19) - 9. ($BNc(B) $BFI$`$+$+$7$i$H(B $B4|BT$9$k$N$K(B
check_span_arc_bc(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).

%(cat(mer(ry)),gr(mer(case6))) * (cat(mcand(y)),gr(mcand(case1)))
%(19) - 10. ($BNc(B) $BMh$k$N$+(B $B$o$+$i$J$$$N$K(B
check_span_arc_bc(ry,y,case6(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).


%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(y)),gr(mcand(case1)))
%(19) - 2. ($BNc(B) $BFI$_(B $B=q$/$N$K(B
check_span_arc_bc(ry,y,_,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).


%***********************************************
%*** $B=hM}(B(20)$B$G$OJ8@aF1;N$,NY$j9g$&$b$N$+(B    ***
%*** $BH]$+$GD%$i$l$k%"!<%/$N%i%s%/$K0c$$$,(B    ***
%*** $B$"$k$?$a%U%i%0(Badj_ph$B$H(Bph$B$G6hJL$9$k(B      ***
%***  (20) rank(b) * rank(d)  --> arc(b)     ***
%***********************************************

%*** $BJ8@aF1;N$,NY$j9g$&$b$N$N>l9g(B(adj_ph)
check_span_arc(b,d,SYN1in,SYN2in,SYN1out,SYN2out,b(ID1,ID2,Arc_k,D),adj_ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_bd(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D,adj_ph).

%*** $BJ8@aF1;N$,N%$l$?J8@aF1;N$N>l9g(B(ph)
% adj_ph$B$H(Bph$B$H$,JQ$o$i$J$$$b$N(B
check_span_arc(b,d,SYN1in,SYN2in,SYN1out,SYN2out,d(ID1,ID2,Arc_k,D),ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),
    check_span_arc_bd_ph(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(y)),gr(mcand(case1)))
%(20) - 1. ($BNc(B) $B5^$$$F(B $B?)$Y$k$,(B
check_span_arc_bd_ph(ry,y,nil,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(ty)),gr(mcand(case1)))
%(20) - 2. ($BNc(B) $B$"$$$K$/(B $BN1<i$@$,(B
check_span_arc_bd(ry,ty,nil,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%*** $BJ8@aF1;N$,N%$l$?J8@aF1;N$N>l9g(B(ph)
check_span_arc(b,d,SYN1in,SYN2in,SYN1out,SYN2out,d(ID1,ID2,Arc_k,D),ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_bd(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D,ph).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(y)),gr(mcand(case1)))
%(20) - 1. ($BNc(B) $B5^$$$F(B $B?)$Y$k$,(B
check_span_arc_bd(ry,y,nil,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(ty)),gr(mcand(case1)))
%(20) - 2. ($BNc(B) $B$"$$$K$/(B $BN1<i$@$,(B
check_span_arc_bd(ry,ty,nil,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(y)),gr(mcand(case1)))
%(20) - 3. ($BNc(B) $BJb$1$P(B       $BHh$l$k$,(B
%(20) - 5. ($BNc(B) $BJb$$$F$b(B     $BHh$l$k$,(B
%(20) - 7. ($BNc(B) $BJb$$$?$H$-(B   $BHh$l$k$,(B
%(20) - 9. ($BNc(B) $BJb$/$H$7$?$i(B $BHh$l$k$,(B
check_span_arc_bd(ry,y,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(ty)),gr(mcand(case1)))
%(20) - 4.  ($BNc(B) $BAv$l$P(B          $B0lHV$@$,(B
%(20) - 6.  ($BNc(B) $BJb$$$F$b(B        $B0lHV$@$,(B
%(20) - 8.  ($BNc(B) $BAv$C$?$H$-(B      $B0lHV$@$,(B 
%(20) - 10. ($BNc(B) $BAv$C$?$H$7$?$i(B  $B0lHV$@$,(B
check_span_arc_bd(ry,ty,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(20) - 11. ($BNc(B) $BFI$`$H$7$?$i(B   $B$o$+$k$,(B
%(20) - 13. ($BNc(B) $BFI$`$K$7$m(B     $BA[A|$G$-$k$,(B 
%(20) - 15. ($BNc(B) $BFI$`$H$9$k$H(B   $B$o$+$k$,(B
%(20) - 17. ($BNc(B) $BFI$`$+$+$7$i$H(B $BA[A|$9$k$,(B
check_span_arc_bd(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(ty)),gr(mcand(case1)))
%(20) - 12. ($BNc(B) $B5^$0$H$7$?$i(B $B0lHV$@$,(B
%(20) - 14. ($BNc(B) $B5^$0$K$7$m(B   $B0lHV$@$,(B
%(20) - 16. ($BNc(B) $B5^$0$H$9$k$H(B $B0lHV$@$,(B
%(20) - 18. ($BNc(B) $BMh$k$N$+(B     $BITL@$@$,(B
check_span_arc_bd(ry,ty,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).

%(cat(mer(ry)),gr(mer(case6))) * (cat(mcand(y)),gr(mcand(case1)))
%(20) - 19. ($BNc(B) $BMh$k$N$+(B $B$o$+$i$J$+$C$?$,(B
check_span_arc_bd(ry,y,case6(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).

%(cat(mer(ry)),gr(mer(case6))) * (cat(mcand(ty)),gr(mcand(case1)))
%(20) - 20. ($BNc(B) $B$_$,$$$?$N$+(B  $B$T$+$T$+$@$,(B
check_span_arc_bd(ry,ty,case6(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).


%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(y)),gr(mcand(case1)))
%(20) - 1. ($BNc(B) $B?)$Y(B $B0{$`$,(B
check_span_arc_bd(ry,y,_,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).

%(cat(mer(ry)),gr(mer({}))) * (cat(mcand(ty)),gr(mcand(case1)))
%(20) - 2. ($BNc(B) $B0B$/(B $B9b5i$@$,(B
check_span_arc_bd(ry,ty,_,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D,_).


%**********************************************
%***  (21)  rank(c) * rank(c)  --> arc(c)   ***
%**********************************************

check_span_arc(c,c,SYN1in,SYN2in,SYN1out,SYN2out,c(ID1,ID2,Arc_k,D),P) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_cc(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).


%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(y)),gr(mcand(case1)))
%(21) - 1. ($BNc(B) $BMh$l$P(B $B2q$($k$N$K(B
check_span_arc_cc(ry,y,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(21) - 2. ($BNc(B) $B0B$$$H$O$$$&$b$N$N(B $BGc$($P(B
check_span_arc_cc(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).



%***********************************************
%*** $B=hM}(B(22)$B$G$OJ8@aF1;N$,NY$j9g$&$b$N$+(B    ***
%*** $BH]$+$GD%$i$l$k%"!<%/$N%i%s%/$K0c$$$,(B    ***
%*** $B$"$k$?$a%U%i%0(Badj_ph$B$H(Bph$B$G6hJL$9$k(B      ***
%***  (22) rank(c) * rank(d)  --> arc(c)   ***
%***********************************************

%*** $BJ8@aF1;N$,NY$j9g$&$b$N$N>l9g(B(adj_ph)
check_span_arc(c,d,SYN1in,SYN2in,SYN1out,SYN2out,c(ID1,ID2,Arc_k,D),adj_ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_cd(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%*** $BJ8@aF1;N$,N%$l$?J8@aF1;N$N>l9g(B(ph)
check_span_arc(c,d,SYN1in,SYN2in,SYN1out,SYN2out,d(ID1,ID2,Arc_k,D),ph) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_cd(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).


%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(y)),gr(mcand(case1)))
%(22) - 1. ($BNc(B) $BFI$s$@$N$G(B $B$o$+$C$?$,(B
check_span_arc_cd(ry,y,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(ty)),gr(mcand(case1)))
%(22) - 2. ($BNc(B) $BFI$s$@$N$G(B $B0lHV$@$C$?$,(B
check_span_arc_cd(ry,ty,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(22) - 3. ($BNc(B) $BFI$s$@$;$$$G(B $BM}2r$G$-$?$,(B
check_span_arc_cd(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(ty)),gr(mcand(case1)))
%(22) - 4. ($BNc(B) $BFI$s$@$;$$$G(B $B0lHV$@$C$?$,(B
check_span_arc_cd(ry,ty,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).


%**********************************************
%***  (23)  rank(d) * rank(d)  --> arc(d)   ***
%**********************************************


check_span_arc(d,d,SYN1in,SYN2in,SYN1out,SYN2out,d(ID1,ID2,Arc_k,D),P) :-
    search(SYN1in,cat,mer,Cmer),
    search(SYN2in,cat,mcand,Ccand),
    search_no_fail(SYN1in,gr(Gmer)),
    search_no_fail(SYN2in,gr(Gcand)),
    last(Gmer,Gmer_l),
    last(Gcand,Gcand_l),
    search(SYN1in,id(ID1)),
    search(SYN2in,id(ID2)),!,
    check_span_arc_dd(Cmer,Ccand,Gmer_l,Gcand_l,SYN1in,SYN2in,SYN1out,SYN2out,Arc_k,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(y)),gr(mcand(case1)))
%(23) - 1. ($BNc(B) $B$*$=$i$/(B $B?)$Y$k$@$m$&$,(B
check_span_arc_dd(ry,y,nil,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(nil))) * (cat(mcand(ty)),gr(mcand(case1)))
%(23) - 2. ($BNc(B) $B$*$=$i$/(B $B3X@8$i$7$$$,(B
check_span_arc_dd(ry,ty,nil,_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(y)),gr(mcand(case1)))
%(23) - 3. ($BNc(B) $BFI$s$@$,(B $B$o$+$i$J$$$N$G(B
check_span_arc_dd(ry,y,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case3))) * (cat(mcand(ty)),gr(mcand(case1)))
%(23) - 4. ($BNc(B) $BF/$$$F$$$k$,(B $B3X@8$@$,(B
check_span_arc_dd(ry,ty,case3(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(y)),gr(mcand(case1)))
%(23) - 5. ($BNc(B) $BFI$s$@$b$N$N(B $B$o$+$i$J$+$C$?$N$G(B
check_span_arc_dd(ry,y,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).

%(cat(mer(ry)),gr(mer(case5))) * (cat(mcand(ty)),gr(mcand(case1)))
%(23) - 6. ($BNc(B) $B0B$$$H$O$$$&$b$N$N(B $B:G9b5iIJ$@$,(B
check_span_arc_dd(ry,ty,case5(X),_,SYN1in,SYN2in,SYN1in,SYN2in,modif,D).


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%                                    %%%
%%%       Miscellaneous Routines       %%%
%%%                                    %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%bound(A) :- nonvar(A).
%unbound(A) :- var(A).

% get last data %
%last([],[]) :-!.
%last([A],A):- !.
%last([_|B],C) :- last(B,C).

% get first data %
%first1([],[]) :-!.
%first1([A|_],A):- !.

% search fail 4 %
%search([],_,_,_) :-!,fail.
%search([A|_],B,mcand,E) :-
%     functor(A,B,2),
%     arg(1,A,EE),
%     arg(1,EE,E).
%search([A|_],B,mer,E) :-
%     functor(A,B,2),
%     arg(2,A,EE),
%     arg(1,EE,E).    
%search([_|T],B,C,D) :-!,
%    search(T,B,C,D).



% search fail 2 %
%search([],_):- !,fail.
%search([A|_],A):-!.
%search([_|T],A) :- !,
%      search(T,A).

% search non fail %
%search_no_fail([],A):- !.
%search_no_fail([A|_],A):-!.
%search_no_fail([_|T],A) :- !,
%      search_no_fail(T,A).

% the intersection of two lists %
intersect([],_,[]) :-!.
intersect(_,[],[]) :-!.
intersect([A|B],L,[A|C]) :-
    member(A,L),!,
    intersect(B,L,C).
intersect([A|B],L,C) :-
    intersect(B,L,C).

% member %
%member([],_) :- !,fail.
%member([H|_],H) :-!.
%member([_|Others],H) :-!, member(Others,H).

% copy_frame %      
copy_frame([],[]) :- !.
copy_frame([FRAMEH|FRAMET],[f(B,FRAMEOO)|FRAMEIN]) :-
     assign_ff(FRAMEH,f(B,FRAMEO)),
     assign_f(FRAMEO,FRAMEOO),!,
     copy_frame(FRAMET,FRAMEIN).

assign_ff([],[]) :-!.
assign_ff(f(A,FRAMEH),f(B,FRAMEH)) :-
        unbound(A).
assign_ff((A,FRAMEH),f(A,FRAMEH)) :-
        bound(A),!.

%Aug.19 syuusei
assign_f([],[]) :-!.
assign_f((Case,Sem,Subj,Ind),(Case,Sem,Subj,Indd)) :-
    unbound(Ind).
assign_f([(Case,Sem,Subj,Ind)|Others],[(Case,Sem,Subj,Indd)|Rcf]) :-
    unbound(Ind),!,
    assign_f(Others,Rcf).
assign_f([(Case,Sem,Subj,Ind)|Others],[(Case,Sem,Subj,Ind)|Rcf]) :-
    bound(Ind),!,
    assign_f(Others,Rcf).


%frame([{_,[(a,...),(..)]},{_,[(a...)]},..])

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% $B0UL#AG@-%A%'%C%/$N(Bprogram			     %%%
%%% $B$3$3$G$OBN8@$N3J$*$h$S0UL#AG@-$HMQ8@$N3J(B         %%%
%%% $B$*$h$S3J%U%l!<%`$N$b$D0UL#AG@-$N%A%'%C%/$r(B       %%%
%%% $B9T$J$C$F$$$k(B				     %%%
%%% $B0UL#AG@-%A%'%C%/$OJ#?t0MB84X78(B(check_gr_sem_t)   %%%
%%% $B$N>l9g$H$=$l0J30(B(check_gr_sem)$B$H$G6hJL$5$l$F$$$k(B %%%
%%% $B$J$*0UL#AG@-$*$h$SMQ8@$b;}$D3J%U%l!<%`$O(B         %%%
%%% $B7W;;5!MQF|K\8l4pK\F0;l(B,$B7AMF;l<-=q(B(IPAL)          %%%
%%% ($B>pJs=hM}?66=;v6H6(2q5;=Q%;%s%?!<$rMQ$$$F$$$k(B)   %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%*** $BJ#?t0MB84X78$N>l9g(B				    ***%
%*** In case topic1
check_gr_sem_t([tim],B,C,D,E,F) :-
	check_gr_sem([tim],B,C,D,E,F).
check_gr_sem_t(A,B,C,D,E,F) :-
	check_gr_sem(A,B,C,D,E,F),
	unbound(F),!,fail.
check_gr_sem_t(A,B,C,D,E,F) :-
	check_gr_sem(A,B,C,D,E,F),
	bound(F).

%*** $BJ#?t0MB84X780J30$N>l9g(B			    ***%
%*** Others  
check_gr_sem(A,$B$K(B,C,D,E,F) :-
     check_gr_sem_tf(A,$B$K(B,C,D,E,F).
check_gr_sem(A,$B$G(B,C,D,E,F) :-
     check_gr_sem_tf(A,$B$G(B,C,D,E,F).
check_gr_sem(A,$B$h$j(B,C,D,E,F) :-
     check_gr_sem_tf(A,$B$h$j(B,C,D,E,F).
check_gr_sem(A,$B$+$i(B,C,D,E,F) :-
     check_gr_sem_tf(A,$B$+$i(B,C,D,E,F).
check_gr_sem(A,$B$^$G(B,C,D,E,F) :-
     check_gr_sem_tf(A,$B$^$G(B,C,D,E,F).
check_gr_sem(A,B,C,D,E,F) :-
    check_gr_sem_tf(A,B,C,D,E,F),
    unbound(F),!,fail.
check_gr_sem(A,B,C,D,E,F) :-
    check_gr_sem_tf(A,B,C,D,E,F),
    bound(F).

check_gr_sem_tf(A,GR,NO,FRAMEIN,FRAMEOUT,TF) :-
	A == [],!.
check_gr_sem_tf([SEMH|SEMT],GR,NO,FRAME,FRAMEOUT,TF) :-
    check_grsem(SEMH,GR,NO,FRAME,FRAMEOUT,TF),!,
    check_gr_sem_tf(SEMT,GR,NO,FRAME,FRAMEOUT,TF).
check_gr_sem_tf([SEMH|SEMT],GR,NO,FRAME,FRAMEOUT,TF) :-
    check_gr_sem_tf([SEMT],GR,NO,FRAME,FRAMEOUT,TF).
%check_gr_sem_tf([],GR,NO,FRAMEIN,FRAMEOUT,TF) :- 
%     check_grsem(div,GR,NO,FRAMEIN,FRAMEOUT,TF).
check_gr_sem_tf([SEM],GR,NO,FRAME,FRAMEOUT,TF) :- !,
    check_grsem(SEM,GR,NO,FRAME,FRAMEOUT,TF).

check_grsem(SEM,GR,NO,[],[],TF).
check_grsem(SEM,GR,NO,[f(A,FRAMEH)|FRAMET],[f(A,FRAMEH)|FRAMEIN],TF) :-
     case_member(FRAMEH,GR,SEM,NO,TF),!,
     check_grsem(SEM,GR,NO,FRAMET,FRAMEIN,TF).
check_grsem(SEM,GR,NO,[f(A,FRAMEH)|FRAMET],[f(A,FRAMEH)|FRAMEIN],TF) :- !,
     check_grsem(SEM,GR,NO,FRAMET,FRAMEIN,TF).
check_grsem(SEM,GR,NO,f(A,FRAMEH),[f(A,FRAMEH)|FRAMEIN],TF) :- !,
     case_member(FRAMEH,GR,SEM,NO,TF).

case_member([],GR,SEM,NO1,TF) :- !.
case_member((Case,[SEMH|SEMT],Subj,NO),GR,SEM,NO1,tf) :-
        case_member([(GR,SEMT,Subj,NO)],GR,SEM,NO1,tf).

case_member([(GR,[],Subj,NO)|R],GR,SEM,NO1,TF) :- !,
        case_member(R,GR,SEM,NO1,TF).

case_member([(GR,[SEMH|SEMT],Subj,NO)|R],GR,SEM,NO1,tf) :-
        case([(GR,SEMH,Subj,NO)],GR,SEM,NO1),!,
        case_member([(GR,SEMT,Subj,NO)|R],GR,SEM,NO1,tf).

case_member([(GR,[SEMH|SEMT],Subj,NO)|R],GR,SEM,NO1,TF) :-
        case_member([(GR,SEMT,Subj,NO)|R],GR,SEM,NO1,TF).

case_member([(GR,SEM,Subj,NO)|R],GR,SEM,NO,TF) :-!.

case_member([H|Others],GR,SEM,NO1,TF) :- !,
    case_member(Others,GR,SEM,NO1,TF).

%%% $B7W;;5!MQF|K\8l4pK\F0;l(B,$B7AMF;l<-=q(B(IPAL)          %%%
%%% ($B>pJs=hM}?66=;v6H6(2q5;=Q%;%s%?!<(B)               %%%
%%% $B$K$h$k(B%$B0UL#AG@-$N>e0L2<0L4X78(B    		     %%%
%%% $B$J$*(BIPAL$B$OF0;l$H7AMF;l$N0UL#AG@-$,<c430[$J$k$,(B   %%%
%%% $B$3$3$G$O7AMF;l$rF0;l$N0UL#BN7O$K9g$o$;$?$b$N$r(B   %%%
%%% $BMQ$$$?(B					     %%%

%%% $B0UL#AG@-4V$K@.$jN)$DJq4^4X78$O0J2<$NDL$j$H$9$k(B                     %%%
%%% hum $B">(B ani $B">(B con $B">(B div                                           %%%
%%% pro $B"K(B nat $B"K(B par $B"K(B pla $B"K(B org $B">(B con $B">(B div		       %%%
%%% phe $B">(B div							       %%%
%%% qua $B"K(B tim $B"K(B loc $B"K(B rel $B"K(B cha $B"K(B lin $B"K(B men $B"K(B act $B">(B abs $B">(B div %%%

case([(GR,con,Subj,NO)],GR,con,NO) :-!.
case([(GR,con,Subj,NO)],GR,ani,NO) :-!.
case([(GR,ani,Subj,NO)],GR,ani,NO) :-!.
case([(GR,con,Subj,NO)],GR,hum,NO) :-!.
case([(GR,hum,Subj,NO)],GR,hum,NO) :-!.
case([(GR,ani,Subj,NO)],GR,hum,NO) :-!.
case([(GR,con,Subj,NO)],GR,org,NO) :-!.
case([(GR,org,Subj,NO)],GR,org,NO) :-!.
case([(GR,con,Subj,NO)],GR,pla,NO) :-!.
case([(GR,pla,Subj,NO)],GR,pla,NO) :-!.
case([(GR,con,Subj,NO)],GR,par,NO) :-!.
case([(GR,par,Subj,NO)],GR,par,NO) :-!.
case([(GR,con,Subj,NO)],GR,nat,NO) :-!.
case([(GR,nat,Subj,NO)],GR,nat,NO) :-!.
case([(GR,con,Subj,NO)],GR,pro,NO) :-!.
case([(GR,pro,Subj,NO)],GR,pro,NO) :-!.

case([(GR,phe,Subj,NO)],GR,phe,NO) :-!.

case([(GR,abs,Subj,NO)],GR,abs,NO) :-!.
case([(GR,abs,Subj,NO)],GR,act,NO) :-!.
case([(GR,act,Subj,NO)],GR,act,NO) :-!.
case([(GR,abs,Subj,NO)],GR,men,NO) :-!.
case([(GR,men,Subj,NO)],GR,men,NO) :-!.
case([(GR,abs,Subj,NO)],GR,lin,NO) :-!.
case([(GR,lin,Subj,NO)],GR,lin,NO) :-!.
case([(GR,abs,Subj,NO)],GR,cha,NO) :-!.
case([(GR,cha,Subj,NO)],GR,cha,NO) :-!.
case([(GR,abs,Subj,NO)],GR,rel,NO) :-!.
case([(GR,rel,Subj,NO)],GR,rel,NO) :-!.
case([(GR,abs,Subj,NO)],GR,loc,NO) :-!.
case([(GR,loc,Subj,NO)],GR,loc,NO) :-!.
case([(GR,abs,Subj,NO)],GR,tim,NO) :-!.
case([(GR,tim,Subj,NO)],GR,tim,NO) :-!.
case([(GR,abs,Subj,NO)],GR,qua,NO) :-!.
case([(GR,qua,Subj,NO)],GR,qua,NO) :-!.

case([(GR,div,Subj,NO)],GR,div,NO) :-!.
case([(GR,div,Subj,NO)],GR,con,NO) :-!.
case([(GR,div,Subj,NO)],GR,ani,NO) :-!.
case([(GR,div,Subj,NO)],GR,hum,NO) :-!.
case([(GR,div,Subj,NO)],GR,org,NO) :-!.
case([(GR,div,Subj,NO)],GR,pla,NO) :-!.
case([(GR,div,Subj,NO)],GR,par,NO) :-!.
case([(GR,div,Subj,NO)],GR,nat,NO) :-!.
case([(GR,div,Subj,NO)],GR,pro,NO) :-!.
case([(GR,div,Subj,NO)],GR,phe,NO) :-!.
case([(GR,div,Subj,NO)],GR,abs,NO) :-!.
case([(GR,div,Subj,NO)],GR,act,NO) :-!.
case([(GR,div,Subj,NO)],GR,men,NO) :-!.
case([(GR,div,Subj,NO)],GR,lin,NO) :-!.
case([(GR,div,Subj,NO)],GR,cha,NO) :-!.
case([(GR,div,Subj,NO)],GR,rel,NO) :-!.
case([(GR,div,Subj,NO)],GR,loc,NO) :-!.
case([(GR,div,Subj,NO)],GR,tim,NO) :-!.
case([(GR,div,Subj,NO)],GR,qua,NO) :-!.
case([(GR,s,Subj,NO)],GR,s,NO) :-!.



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% dcg $B%U%!%$%k(B new_rdg_t2.dcg $B$+$i(B %%%
%%% $B8F$P$l$kJd6/9`(B                   %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

check_arc(A,B) :- unbound(B),!.
check_arc(a(_,_,_,_),[a(_,_,_,_)|_]) :-!.
check_arc(b(_,_,_,_),[a(_,_,_,_)|_]) :-!.
check_arc(c(_,_,_,_),[a(_,_,_,_)|_]) :-!.
check_arc(d(_,_,_,_),[a(_,_,_,_)|_]) :-!.
check_arc(b(_,_,_,_),[b(_,_,_,_)|_]) :-!.
check_arc(c(_,_,_,_),[b(_,_,_,_)|_]) :-!.
check_arc(d(_,_,_,_),[b(_,_,_,_)|_]) :-!.
check_arc(c(_,_,_,_),[c(_,_,_,_)|_]) :-!.
check_arc(d(_,_,_,_),[c(_,_,_,_)|_]) :-!.
check_arc(d(_,_,_,_),[d(_,_,_,_)|_]) :-!.



check_ww(A,B,C,D,E) :-
    check(A,B,C,D,E,adj_ph),!.
check_wsw(A,B,C,D,E) :-
    check(A,B,C,D,E,adj_ph),!.

check_wws(A,B,C,D,E) :-
    check(A,B,C,D,E,ph),!.
check_wsws(A,B,C,D,E) :-
    check(A,B,C,D,E,ph),!.


d_merge([A|D],[B|C],[[A|D],[B|C]]) :-
    not(list(B)),
    not(list(A)).
d_merge([A|D],[B|C],[[A|D],B|C]):-
     not(list(A)),
    listlen([B|C],Count),
    Count >= 2.

d_merge([A|D],[B|C],EE) :-
    not(list(B)),
    listlen([A|D],Count),
    Count >= 2,
    append([A|D],[[B|C]],EE).

d_merge([A|D],[B|C],EE):-
    append([A|D],[B|C],EE).


listlen(L,N) :- 
    lenacc(L,0,N).
lenacc([],A,A).
lenacc([H|T],A,N) :-
    A1 is A+1,
    lenacc(T,A1,N).


check_topic([SYN1|B],[SYN2|A],SYN11,SYN22,ARC,P):-
            not(list(SYN1)),
            not(list(SYN2)),!,
            check_topic_main([SYN1|B],[SYN2|A],SYN11,SYN22,ARC,P).

check_topic([SYN1|B],[SYN2|A],SYN11,SYN22,ARC,P):-
            not(list(SYN2)),
                list(SYN1),
            last([SYN1|B],SYNN),
            check_topic_main(SYNN,[SYN2|A],SYN111,SYN22,ARC,P),!,
            subst(SYNN,[SYN1|B],SYN111,SYN11).

check_topic([SYN1|B],[SYN2|A],SYN11,SYN22,ARC,P):-
            not(list(SYN1)),
                list(SYN2),
            last([SYN2|A],SYNN),!,
            check_topic_main([SYN1|B],SYNN,SYN11,SYN222,ARC,P),!,
            subst(SYNN,[SYN2|A],SYN222,SYN22).

check_topic([SYN1|B],[SYN2|A],SYN11,SYN22,ARC,P):-
            last([SYN1|B],SYNM),
            last([SYN2|A],SYNN),
            check_topic_main(SYNM,SYNN,SYN111,SYN222,ARC,P),!,
            subst(SYNM,[SYN1|B],SYN111,SYN11),!,
            subst(SYNN,[SYN2|A],SYN222,SYN22).

check([SYN1|B],[SYN2|A],[SYN1|B],SYN22,ARC,P):-
            not(list(SYN1)),
            not(list(SYN2)),!,
            check_main([SYN1|B],[SYN2|A],[SYN1|B],SYN22,ARC,P).

check([SYN1|B],[SYN2|A],SYN11,SYN22,ARC,P):-
            not(list(SYN2)),
                list(SYN1),
            last([SYN1|B],SYNN),
            check_main(SYNN,[SYN2|A],SYN111,SYN22,ARC,P),!,
            subst(SYNN,[SYN1|B],SYN111,SYN11).

check([SYN1|B],[SYN2|A],[SYN1|B],SYN22,ARC,P):-
            not(list(SYN1)),
                list(SYN2),
            last([SYN2|A],SYNN),!,
            check_main([SYN1|B],SYNN,[SYN1|B],SYN222,ARC,P),!,
            subst(SYNN,[SYN2|A],SYN222,SYN22).

check([SYN1|B],[SYN2|A],SYN11,SYN22,ARC,P):-
            last([SYN1|B],SYNM),
            last([SYN2|A],SYNN),
            check_main(SYNM,SYNN,SYN111,SYN222,ARC,P),!,
            subst(SYNM,[SYN1|B],SYN111,SYN11),!,
            subst(SYNN,[SYN2|A],SYN222,SYN22).


list([A|B]) :- list(B).
list([]).

not(P) :- call(P),!,fail.
not(P).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% (C)1992 Institute for New Generation Computer Technology %
% $BG[I[$=$NB>$O(B COPYRIGHT $B%U%!%$%k$r;2>H$7$F2<$5$$(B          %
% ( Read COPYRIGHT for detailed information. )             %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%% file --> dic.pl 

%subst(_,[],_,[]) :- !.
%subst(X,[X|L],A,[A|M]) :- !, subst(X,L,A,M).
%subst(X,[Y|L],A,[Y|M]) :- subst(X,L,A,M).
	
%append([],X,X) :- !.
%append([H|T],L,[H|U]) :- !, append(T,L,U).

%%% file --> parser.pl

% tail %    
%tail(T,Dat) :- var(T),!,T=[Dat|_].
%tail([_|T],Dat) :- !,tail(T,Dat).

% get %
%get_last_element([C|CL],C) :- var(CL) ,!.
%get_last_element([_|CL],C) :- !,
%	get_last_element(CL,C).

% get element %
%get_element(N,X,P,P) :- var(X),!.
%get_element(N,[H|T],TTT,TT) :- !, arg(N,H,HH),get_element(N,T,[HH|TTT],TT).

	
% search fail 2 %
%search([],_):- !,fail.
%search([A|_],A):-!.
%search([_|T],A) :- !,
%      search(T,A).

% search non fail %
%search_no_fail([],A):- !.
%search_no_fail([A|_],A):-!.
%search_no_fail([_|T],A) :- !,
%      search_no_fail(T,A).


%%% file --> rdg_gram.pl & rdg_gram_sem.pl

%bound(A) :- nonvar(A).
%unbound(A) :- var(A).

% get last data %
%last([],[]) :-!.
%last([A],A):- !.
%last([_|B],C) :- last(B,C).

% get first data %
%first1([],[]) :-!.
%first1([A|_],A):- !.

% search fail 4 %
%search([],_,_,_) :-!,fail.
%search([A|_],B,mcand,E) :-
%     functor(A,B,2),
%     arg(1,A,EE),
%     arg(1,EE,E).
%search([A|_],B,mer,E) :-
%     functor(A,B,2),
%     arg(2,A,EE),
%     arg(1,EE,E).    
%search([_|T],B,C,D) :-!,
%    search(T,B,C,D).

% search fail 2 %
%search([],_):- !,fail.
%search([A|_],A):-!.
%search([_|T],A) :- !,
%      search(T,A).



