solve(# P,V,L1,L2) :- !, P =.. [_関係表名|_引数ならび], select cname into _属性名ならび from col where tname=_関係表名, 条件の選別(_属性名ならび,_引数ならび,_条件句候補,L1), ( not(_条件句候補=[]), 条件句の作成(_条件句候補,_条件句), select * into X from _関係表名 where _条件句; _条件句候補=[], select * into X from _関係表名 ), member(_引数ならび,X). でなくてはいけません。ただし、( ) の部分は別述語として定義する べきでしょう。