このディレクトリの索引
#  述語 全ての要素についてPである (引数の数は任意) を定義してください。
#  条件 第一引数には リストがきます。このリストの要素を全て満足する目標が
#       最後の引数Pとなります。
%
%  ?- 全ての要素についてPである([1,2,3],_要素,member(_要素,[2,2,4,1,3])).
%  _要素 = _1001
%  true
%  

全ての要素についてPである(L,_要素,P) :-
        length(L,Len),
        length(L2,Len),
        findall(_,(
                   member(_要素,L),
                   call_P(P)),
                L2).

call_P(P) :- call(P),!.

%%%%% SWI-Prolog では不要です %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
length([],0) :- !.
length(List,Length) :-
        var(List),
        integer(Length),
        Length >= 0,
        make_var_list(Length,List),!.
length([_|R1],Length) :-
        length(R1,Length_1),
        Length is Length_1 + 1,!.

make_var_list(0,[]) :- !.
make_var_list(N,[_|R]) :-
        N_1 is N - 1,
        make_var_list(N_1,R).