図2.2に例題として, 数を要素とするあるリストが他のリスト の部分集合となっているか調べるプログラムを示す.
生成されたオブジェクトプログラムを -t オプションを付けて起動し, <CR> を入力し続けると以下に示すように, 実行をトレースできる.
% klic -o subset subset.kl1 1 % subset -t 1 CALL:main:main? 1 REDU:main:main :- 2 0:+subset(yes,[3,1],[1,3,5],_3) 5 3 1:+io:outstream([print(_3),nl])? 2 CALL:main:subset(yes,[3,1],[1,3,5],_3)? 2 REDU:main:subset(yes,[3,1],[1,3,5],_3) :- 4 0:+member(3,[1,3,5],_11) 5 1:+subset(_11,[1],[1,3,5],_3)? 10 4 CALL:main:member(3,[1,3,5],_11)? 4 REDU:main:member(3,[1,3,5],_11) :- 6 0:+member(3,[3,5],_11)? 6 CALL:main:member(3,[3,5],_11)? 6 REDU:main:member(3,[3,5],yes)? 15 5 CALL:main:subset(yes,[1],[1,3,5],_3)? 5 REDU:main:subset(yes,[1],[1,3,5],_3) :- 7 0:+member(1,[1,3,5],_21) 8 1:+subset(_21,[],[1,3,5],_3)? 7 CALL:main:member(1,[1,3,5],_21)? 20 7 REDU:main:member(1,[1,3,5],yes)? 8 CALL:main:subset(yes,[],[1,3,5],_3)? 8 REDU:main:subset(yes,[],[1,3,5],yes)? 3 CALL:io:outstream([print(yes),nl])? s yes 25 %