このディレクトリの索引
#  
#  等差数列の再帰的定義
#  

等差数列(_等差数列) :-
        等差数列(_等差数列,_公差),!.

等差数列([_],_公差).
等差数列([A,B|R],_公差) :-
        '先頭の変数でない二要素の差が公差であり後続もこの公差の等差数列である時、等差数列である'([A,B|R],_公差),!.
等差数列([A,B|R],_公差) :-
        'A,Bどちらかが変数の時は、後続が等差数列であるならば公差からAを決定して構わない'(A,B,R,_公差).

'先頭の変数でない二要素の差が公差であり後続もこの公差の等差数列である時、等差数列である'([A,B|R],_公差) :-
        \+(var(A)),
        \+(var(B)),
        _公差 is B - A,
        等差数列([B|R],_公差).

'A,Bどちらかが変数の時は、後続が等差数列であるならば公差からAを決定して構わない'(A,B,R,_公差) :-
        'A,Bどちらかが変数の時は、'(A,B),
        '後続が等差数列であるならば公差からAを決定して構わない'(B,R,_公差,A),!.

'A,Bどちらかが変数の時は、'(A,B) :-
        var(A),!.
'A,Bどちらかが変数の時は、'(A,B) :-
        var(B).

'後続が等差数列であるならば公差からAを決定して構わない'(B,R,_公差,A) :-
        等差数列([B|R],_公差),
        A is B - _公差,!.