> a(A,B) :- X=[A,B],(member(5,X);Y=1),printAVM([X,Y]).
> ?- a(1,5).
< < 1, 5 >, bot >
yes
> ?- a(1,2).
< bot, 1 >
yes

͐C < < 1, 2 >, 1 > ƕ\͂D

> b(A,B,X) :- X=[A,B],(member(5,X);Y=1),printAVM([X,Y]).
> ?- b(1,2,X).
< < 1, 2 >, 1 >
X: < 1, 2 >
> e(A,B) :- X=[A,B],printAVM(X),(member(5,X);Y=1),printAVM([X,Y]).
> ?- e(1,2).
< 1, 2 >
< < 1, 2 >, 1 >
yes

͐C

> c(A,B) :- _ = X & [A,B],(member(5,X);Y=1),printAVM([X,Y]).
> ?- c(1,2).
< bot, 1 >
yes
> d(A,B) :- (member(5,X & [A,B]);Y=1),printAVM([X,Y]).
> ?- d(1,2).
< bot, 1 >

͂߁D̍œKɂāCa, c  d Ɠ悤ɏĂD

܂C
Eq body ̒ŏoĂϐC
Edisjunction ̒ł͂߂ĎgĂāC
E disjunct sƁC
̕ϐ binding ؂Ă܂D

ȉCq삳ɂ񓚁D

----------------------------------------------------------------------
disjunction ̕ЕɂoĂȂϐ́Apgoaldisj::Compile ̂Ȃ 
AddCode(C_LINK1ST, ...) 悤ɂȂĂāÂ܂ disjunction 
ɍsȂ悤ɂȂĂ܂BŕK bot Ă̂̍
łBA̎_ł͏Ƃ牽炢̂̏
𓾂邱Ƃ͂ł܂Bptree \鎞_ōHvKv܂B


> d(A,B) :- printAVM("hi"), (member(5,X & [A,B]);Y=1),printAVM([X,Y]).
> ?- d(1,2).
ɏW񂳂킯łˁBȗ̂ printAVM("hi") Ă܂B
 X = [A,B] ͌ĎsȂ (X o) ̂ŁÂǂꂩɓ
ό`ł܂Bmł͂Ȃł̏ƂāB

1) d(A,B) :- printAVM("hi"), _=X&[A,B], (member(5,X);Y=1),printAVM([X,Y]).
2) d(A,B) :- printAVM("hi"), (member(5,X&[A,B]);Y=1,_=X&[A,B]),printAVM([X,Y]).
3) d(A,B) :- printAVM("hi"), (member(5,X&[A,B]);Y=1),printAVM([X&[A,B],Y]).

܂ǂɂ邩IłB
ŁAȂ悤 ptree \΂ƂɂȂ܂B

new pgoaldisj Ăł̂ structur.cpp 4ӏŁÂKv
Ƃł ShareList slcopy(sl); Ƃ̂ĂƎv܂B
ShareList ́Ao̕ϐnbVɓĊǗĂNXłB
GenPTreeOfDescription ̂ȂŁA ptree f\̃|C^
 ShareList ɓo^A͂܂߂ ptree A2ڈȍ~ 
pvariable  ptree Ԃ悤ɂȂĂ܂B
pgoaldisj ̂Ƃ sl Rs[Ă̂
p :- ( q(X & [Y]) ; r(X) ).
̂悤ȂƂɁAr(X) ̌Ăяo X & [Y] \悤ɂƂ
łB

̌Asl  slcopy }[WĕԂĂ܂Ã}[W鎞_ŁA
sl  slcopy ̍قr΁Adisjunction ̂ǂ炩ŏo̕ϐ
sbNAbvł܂BŏLǂꂩ̑΍łĂ΂ƂɂȂ܂B
̓Iɂ́AX&[...] ɑ ptree  GenPTreeOfDescription(sl, X, bot) 
̖߂lœ̂ŁA̖߂l pgoalconj Ŋ ptree ɂ
Ă΂ƂɂȂ܂B

@́AL 1) 2) ́Adisjunction ̌ŕϐgĂȂ命
ꍇɂ͎sԂʂɒቺ邱Ƃł (*1)BŎgĂ邩ǂ
m߂΂̂łA݂ GenPTree V[Y̐݌vł͂̏
͓Ȃ̂ŁAǉĂKv܂B3) ƁA2 X&[A,B] 
̃R[hs邱ƂłAϐ 2  (o/o) ł͂Ȃ 
3  (o/oōēx ptree sv/oǍēx ptree Kv) ɂȂ
Ă܂A݂ ShareList ł̊Ǘ@ςȂ΂ȂȂ܂B

(*1) p(X,Y) :- (X = Y ; print([1,2,3,4])). ݂ȏq̏ꍇAۂ
print( V1& [1,2,3,4] )
Ȃ킯ŁAꂪS disjunction ̂ЕŏƁAƒ 
disjunction ł̓I[o[wbhƂɂȂ܂B

