このディレクトリの索引
#          プログラム:  言語(a) を受理するNDFA
#  
#                                 a             
#                    -------------------------
#           状態_0                           |                            
#                    <------------------------
#  
#  
#                    図  簡単なオートマトン
#  

'次の文字列を非決定性有限オートマトンが言語(a)を受理するまで検索する'(_文字列,_前文字列,_受理された文字列,_後文字列) :-
        '文字列を、前・受理された・後文字ならび候補に分解する'(_文字列,_前文字ならび,_受理された文字ならび,_後文字ならび),
        '言語(a)を受理する非決定性有限オートマトン'(_受理された文字ならび),
        '各部文字ならびを文字列に変換する'(_前文字ならび,_受理された文字ならび,_後文字ならび,_前文字列,_受理された文字列,_後文字列).

'文字列を、前・受理された・後文字ならび候補に分解する'(_文字列,_前文字ならび,_受理された文字ならび,_後文字ならび) :-
        atom_chars(_文字列,_文字ならび),
        append([_前文字ならび,_受理された文字ならび,_後文字ならび],_文字ならび),
        \+(_受理された文字ならび=[]).

'各部文字ならびを文字列に変換する'(_前文字ならび,_受理された文字ならび,_後文字ならび,_前文字列,_受理された文字列,_後文字列) :-
        atom_chars(_前文字列,_前文字ならび),
        atom_chars(_受理された文字列,_受理された文字ならび),
        atom_chars(_後文字列,_後文字ならび).


'言語(a)を受理する非決定性有限オートマトン'(_記号ならび) :-
        '言語(a)初期状態'(_状態),
        '言語(a)を受理する非決定性有限オートマトン'(_状態,_記号ならび).

'言語(a)を受理する非決定性有限オートマトン'(_状態,[_記号|R]) :-
        '言語(a)'(_状態,_記号,_状態_1),
        '言語(a)を受理する非決定性有限オートマトン'(_状態_1,R).
'言語(a)を受理する非決定性有限オートマトン'(_状態,[]) :-
        '言語(a)終了状態'(_状態).

'言語(a)初期状態'(状態_0).

'言語(a)終了状態'(状態_0).

'言語(a)'(状態_0,a,状態_0).