%% 知識情報処理実習 r7の練習問題 解答例 % 1. alphabet(a). alphabet(b). isTm1(T) :- alphabet(T). isTm1(f(T)) :- isTm1(T). test7_1_1 :- isTm1(f(a)). test7_1_2 :- isTm1(f(f(b))). test7_1_3 :- isTm1(c). /* 文法の定義をプログラムとして記述するのは誤り. 文法はあくまでもデータに対する規則であり, プログラムはそれに基づいて定義されたデータを解析するものでコンパイラと同じ. */ % 2. alphabet(a). alphabet(b). digit(0). digit(1). isTm2(T) :- alphabet(T). isTm2(T) :- digit(T). isTm2(f(T)) :- isTm2(T). isTm2(g(T1,T2)) :- isTm2(T1), isTm2(T2). test7_2_1 :- isTm2(f(a)). test7_2_2 :- isTm2(g(0,f(b))). test7_2_3 :- isTm2(g(a)). test7_2_4 :- isTm2(f(g(a,a))).