Prologプログラミング: 言語処理 非決定性有限オートマトン Prolog では非決定性有限オートマトンの動作を簡単に シミュレートできます. たとえば,正規表現 a(a|b)*ab を認識するオートマトンを考えてみましょう. このオートマトンは次のような状態遷移図で表されます. すなわち状態遷移関数δは次のようになります. δ(q0, a) = {q1} δ(q1, a) = {q1, q2} δ(q1, b) = {q1} δ(q2, b) = {q3} これを Prolog で次のように書くことにします. delta(q0, a, q1). delta(q1, a, q1). delta(q1, a, q2). delta(q1, b, q1). delta(q2, b, q3). 入力文字列をリストで表すことにすると, 与えられたリスト L が受理可能かどうかを調べる述語 nd