このディレクトリの索引


規則性のある部分ならび(_ならび,_規則,_部分ならび) :-
        append(L1,_部分ならび,L3,_ならび),
        \+(_部分ならび = []),
        部分ならびは規則に適合する(_部分ならび,_規則),
        その前後を含むと規則に適合しなくなる(L1,_部分ならび,L3,_規則).

部分ならびは規則に適合する(_部分ならび,_規則) :-
        P =.. [_規則,_部分ならび],
        call(P).

その前後を含むと規則に適合しなくなる(L1,_部分ならび,L3,_規則) :-
        'L1の最後の要素を含むと規則に適合しない'(L1,_部分ならび,_規則),
        'L3の最初の要素を含むと規則に適合しない'(L3,_部分ならび,_規則).

'L1の最後の要素を含むと規則に適合しない'(L1,_部分ならび,_規則) :-
        \+((append(_,[A],L1),部分ならびは規則に適合する([A|_部分ならび],_規則))).

'L3の最初の要素を含むと規則に適合しない'(L3,_部分ならび,_規則) :-
        P =.. [_規則,A],
        \+((L3 = [A|_],append(_部分ならび,[A],_部分ならび_2),部分ならびは規則に適合する(_部分ならび_2,_規則))).

append([],L2,L3,L4) :-
        append(L2,L3,L4).
append([U|L1],L2,L3,[U|L4]) :-
        append(L1,L2,L3,L4).