如何对变量的出现进行测试?

问题描述

我在 prolog 中有以下代码,我希望能够测试一个变量的出现:

mon_afn(
afn(
    [
        sommet(etat(0),[arc(b,etat(0)),arc(a,etat(1))]),sommet(etat(1),etat(2))])
    ],%liste d'adjacence
    etat(0),%etat initial
    [etat(2)] %etats acceptant
)).


accepte(AFN,MOT):-forall(AFN,accepte_(AFN,MOT)).

accepte_(AFN,MOT) :-
    afn(LISTEADJ,INITIAL,ACCEPTANTS) = AFN,accepte_(MOT,LISTEADJ,ACCEPTANTS,INITIAL).


accepte_([],_,ACC) :-
    member(ACC,ACCEPTANTS).

accepte_([LETTRE|MOT],ACC) :- 
    member(sommet(ACC,L),LISTEADJ),member(arc(LETTRE,D),D).

accepte_2 允许确定一个字符串是否被 NFA 接受,我的 accepte_ / 2 和 accepte_ / 4 谓词按我的意愿工作,但我想要一个 accepte/2 谓词 它将执行以下操作:

? mon_afd(X),accepte(X,['a','b']).
true.

我不想要的:

? mon_afd(X),'b']).
AFN = afn([sommet(etat(0),etat(2))])],etat(0),[etat(2)]);
false.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)