微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我在 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 举报,一经查实,本站将立刻删除。