このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1217773415/821
# コピー句をツリー状のデータ構造に起こしたいと思ってます。
# 簡易的に書くと
# 連番 名前 深さレベル
# 1 aaa 1
# 2 bbb 2
# 3 ccc 2
# 4 ddd 3
# 5 eee 2
# の様な構造から、例えばaaaという名前でアクセスすると自分の直下のbbb,ccc,eeeが取得でき、cccは
# 次の連番に深さ3のdddがあるので、結果的にbbbdddeeeを取得できる。
# bbbを取ろうとした場合は、次の行が同レベルのcccなので純粋にbbbを取得できる。
# というような感じです。 

copy句(_名前,_コピー句) :-
      copy句データ構造(_連番,_名前,_深さレベル),
      _直下のレベル is _深さレベル + 1,
      _次の連番 is _連番 + 1,
      copy句データ構造(_次の連番,_名前,_直下の深さレベル),
      次の連番が直下レベル(_直下のレベル,_コピー句),!.
copy句(_名前,_名前).

次の連番が直下レベル(_直下のレベル,_コピー句) :-
      findall(_コピー句_2,
            (    copy句データ構造(_,_名前,_直下の深さレベル),
                 copy句(_名前,_コピー句_2)),
            _コピー句ならび),
      \+(_コピー句ならび=[]),
      concat_atom(_コピー句ならび,_コピー句),!.