prolog中谓词的错误 - 每个日期都有相同的结果

时间:2016-04-15 07:51:52

标签: prolog program-slicing

我在Prolog中有以下代码,问题是当我运行代码时,它会为每个数据返回相同的结果。

?- run(Diagnosis).
Diagnosis='There is no problem with anemia'.

KB在另一个文件中并加载它,在开始谓词中我加载patient3例如它应该返回

Diagnosis ='Iron deficiency'

请注意,start谓词仅用于检查代码是否正常工作! 当我使用跟踪运行此文件时,它显示首先尝试第一个规则..当它尝试转到另一个规则时,它在 check_RTC 中失败,谓词症状返回症状 ..但为什么? 它应该从一开始就采用所有数据并对每个下一个规则进行检查,直到找到不会失败的规则。

:- ['kb_anemia_V4.pl'].

run(Diagnosis) :-
  clause(kb_da(patient3,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]),Body),
  rule(kb_da(patient3,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]),Diagnosis). 

rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptPos),  %OK 
        check_WBC_PLT(FullBloodTest,noPancytopenia),
        check_RTC(FullBloodTest,rtcUp2),
        check_HBS(ElectricalHb,hbSZero), 
        Diagnosis  = 'Spherocytcocis.'.

rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptPos),  
        check_WBC_PLT(FullBloodTest,noPancytopenia) ,
        check_RTC(FullBloodTest,rtcUp2),
        check_HBS(ElectricalHb,hbsUpZero), 
        Diagnosis  = 'Drepanocytocis.'.     

rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptPos),  
        check_WBC_PLT(FullBloodTest,noPancytopenia) ,
        check_RTC(FullBloodTest,rtcUp2),
        check_HBS(ElectricalHb,hbSZero) ; 
        check_HBS(ElectricalHb,hbsUpZero), 
        Diagnosis  = 'No problem with Spherocytocis or Drepanocytocis.'.    

rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptPos),  
        check_WBC_PLT(FullBloodTest,noPancytopenia) ,
        check_RTC(FullBloodTest,rtcLess2),
        check_MCV(FullBloodTest,mcvLow),
        checkFerritin(FullBloodTest,ferHigh),
        checkElectrofHb([Symptoms,ElectricalHb],yesElectr),
        Diagnosis='Thalassemia'.

rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptPos),  
        check_WBC_PLT(FullBloodTest,noPancytopenia) ,
        check_RTC(FullBloodTest,rtcLess2),
        check_MCV(FullBloodTest,mcvLow),
        checkFerritin(FullBloodTest,ferHigh),
        checkElectrofHb([Symptoms,ElectricalHb],noElectr),
        Diagnosis  = 'There is not problem with anemia,probably hemochromatosis,because of High feritin.'.  

rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptPos),  
        check_WBC_PLT(FullBloodTest,noPancytopenia) ,
        check_RTC(FullBloodTest,rtcLess2),
        check_MCV(FullBloodTest,mcvLow),
        checkFerritin(FullBloodTest,ferLow),
        check_HCT_Hb_FE([FullBloodTest,PersData],hctLow),
        checkRBC([FullBloodTest,PersData],rbcLow),
        Diagnosis  = 'Iron Deficiency'.

rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptPos),  
        check_WBC_PLT(FullBloodTest,noPancytopenia) ,
        check_RTC(FullBloodTest,rtcLess2),
        check_MCV(FullBloodTest,mcvLow),
        checkFerritin(FullBloodTest,ferLow),
        check_HCT_Hb_FE([FullBloodTest,PersData],hctLow),
        checkRBC([FullBloodTest,PersData],rbcHigh), 
        checkElectrHb([[Symptoms,ElectricalHb]],electro),   
        Diagnosis  = 'Minor Thalassemia'.


rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptPos),  
        check_WBC_PLT(FullBloodTest,noPancytopenia) ,
        check_RTC(FullBloodTest,rtcLess2),
        check_MCV(FullBloodTest,mcvLow),
        checkFerritin(FullBloodTest,ferLow),
        check_HCT_Hb_FE([FullBloodTest,PersData],hctHigh),
        checkRBC([FullBloodTest,PersData],rbcHigh), 
        checkElectrHb([[Symptoms,ElectricalHb]],electro),   
        Diagnosis  = 'Minor Thalassemia'.



rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptNeg), 
            Diagnosis  = 'There is not problem with anemia.'.

rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptPos),  
        check_WBC_PLT(FullBloodTest,noPancytopenia) ,
        check_RTC(FullBloodTest,rtcLess2),
        check_MCV(FullBloodTest,mcvNormal),
        checkFerritin(FullBloodTest,ferHigh),
        checkElectrofHb([Symptoms,ElectricalHb],yesElectr),
        Diagnosis='Thalassemia'.

rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptPos),  
        check_WBC_PLT(FullBloodTest,noPancytopenia) ,
        check_RTC(FullBloodTest,rtcLess2),      
        check_MCV(FullBloodTest,mcvHigh),
        check_B12_RBC([PersData,FullBloodTest,SpecBloodTest],b12Low),
        Diagnosis = 'B12 Anemia'.

rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptPos),  
        check_WBC_PLT(FullBloodTest,noPancytopenia) ,
        check_RTC(FullBloodTest,rtcLess2),      
        check_MCV(FullBloodTest,mcvHigh),
        check_Folic(SpecBloodTest,folic),
        Diagnosis = 'Folic Acid Anemia'.        

rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        symptoms(Symptoms,symptPos),  %OK 
        check_WBC_PLT(FullBloodTest,yesPancytopenia),
        Diagnosis = 'Check bone marrow'.


symptoms(Symptoms,symptPos) :-
    check_symptomList(Symptoms), !.
symptoms(Symptoms,symptNeg).




check_symptomList([H|T]) :-
    SymptomList = ['Πονοκέφαλος', 'Αδυναμία', 'Έλλειψη αυτοσυγκέντρωσης',
        'Απώλεια βάρους', 'Απώλεια όρεξης', 'Ωχρότητα',
        'Επώδυνη σπλήνα', 'Ταχυκαρδία', 'Δύσπνοια','Γλωσσίτιδα','Πληγές', 
        'Ελλειπής διατροφή', 'πατερας_Στίγμα', 'πατερας_Μεσογειακή',
        'μητερα_Στίγμα', 'μητερα_Μεσογειακή', 'Ιδιαίτερο'],
    member(H,SymptomList).
check_symptomList([H|T]) :- 
     check_symptomList(T).



check_WBC_PLT([WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT], noPancytopenia) :- 
     number(WBC), number(PLT),
        (WBC > 4500, PLT>150)
;       number(WBC), number(PLT),(WBC > 4500, PLT=<150)
;       number(WBC), number(PLT),(WBC =< 4500, PLT>150).

check_WBC_PLT([WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],yesPancytopenia) :- 
    number(WBC), number(PLT),
        (WBC =< 4500, PLT=<150).



check_RTC([WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],rtcLess2):-
        number(RTC),RTC=<2.
check_RTC([WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],rtcUp2):-
        number(RTC),RTC>2.


check_MCV([WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],mcvLow):-
        number(MCV), MCV=<79.

check_MCV([WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],mcvNormal):-
        number(MCV), MCV>79,MCV<97.

check_MCV([WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],mcvHigh):-      
        number(MCV), MCV=<97.


check_HBS([HbA1,HbA2,HbS,HbF,Schema_RBC],hbSZero):-
        number(HbS), HbS=0,
        Schema_RBC='Σφαίρα'.

check_HBS([HbA1,HbA2,HbS,HbF,Schema_RBC],hbSZero):-
        number(HbS), HbS=0.     

check_HBS([HbA1,HbA2,HbS,HbF,Schema_RBC],hbsUpZero):-   
        number(HbS), HbS>0,
        Schema_RBC=='Δρεπάνι'.  
check_HBS([HbA1,HbA2,HbS,HbF,Schema_RBC],hbsUpZero):-   
        number(HbS), HbS>0.     

checkFerritin([WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],ferLow):-
        number(Ferritin),Ferritin=<20.
checkFerritin([WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],ferHigh):-
        number(Ferritin),Ferritin>20.       

checkElectrofHb([Symptoms, ElectricalHb],electro):-       
     Symptoms = ['Πονοκέφαλος', 'Αδυναμία', 'Έλλειψη αυτοσυγκέντρωσης',
        'Απώλεια βάρους', 'Απώλεια όρεξης', 'Ωχρότητα',
        'Επώδυνη σπλήνα', 'Ταχυκαρδία', 'Δύσπνοια','Γλωσσίτιδα','Πληγές', 
        'Ελλειπής διατροφή', 'πατερας_Στίγμα', 'πατερας_Μεσογειακή',
        'μητερα_Στίγμα', 'μητερα_Μεσογειακή', 'Ιδιαίτερο'],
        ElectricalHb = [HbA1,HbA2,HbS,HbF,Schema_RBC],
        member('Ιδιαίτερο', Symptoms),
        (member('πατερας_Στίγμα', Symptoms), 
            member('μητερα_Μεσογειακή', Symptoms))
    ;   (member('πατερας_Μεσογειακή', Symptoms),
             member('μητερα_Στίγμα', Symptoms))
    ;   (member('πατερας_Μεσογειακή', Symptoms),
            member('μητερα_Μεσογειακή', Symptoms)),
        number(HbF),HbF>2,HbF<9,
        number(HbA1), HbA1<5.



check_HCT_Hb_FE([[WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],[Hlikia,Filo,Egkimosini]],hctLow):-  
        (Filo='male',number(Hct),number(Hb),number(Fe),Hct<40,Hb<14,Fe<55
        ; Filo='female',number(Hct),number(Hb),number(Fe),Hct<36,Hb<10,Fe<45
        ; Filo='male',Egkimosini=yes,number(Hct),number(Hb),number(Fe),Hct<36,Hb<12,Fe<55).


check_HCT_Hb_FE([[WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],[Hlikia,Filo,Egkimosini]],hctHigh).

checkRBC([[WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],[Hlikia,Filo,Egkimosini]],rbcLow):-
        (Filo='male',number(RBC),RBC<4.5);
        (Filo='female',number(RBC),RBC<3.8).

checkRBC([[WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],[Hlikia,Filo,Egkimosini]],rbcHigh):-
        (Filo='male',number(RBC),RBC>6);
        (Filo='female',number(RBC),RBC>4.9).


checkElectrHb([Symptoms, ElectricalHb],electro):-     
     Symptoms = ['Πονοκέφαλος', 'Αδυναμία', 'Έλλειψη αυτοσυγκέντρωσης',
        'Απώλεια βάρους', 'Απώλεια όρεξης', 'Ωχρότητα',
        'Επώδυνη σπλήνα', 'Ταχυκαρδία', 'Δύσπνοια','Γλωσσίτιδα','Πληγές', 
        'Ελλειπής διατροφή', 'πατερας_Στίγμα', 'πατερας_Μεσογειακή',
        'μητερα_Στίγμα', 'μητερα_Μεσογειακή', 'Ιδιαίτερο'],
        ElectricalHb = [HbA1,HbA2,HbS,HbF,Schema_RBC],      
         member('πατερας_Στίγμα', Symptoms);
         member('μητερα_Στίγμα', Symptoms);
         member('μητερα_Μεσογειακή', Symptoms);
         member('πατερας_Μεσογειακή', Symptoms),
        number(HbF),HbF>2,HbF<9,
        number(HbA1), HbA1<1.

check_B12_RBC([[Hlikia,Filo,Egkimosini],[WBC,RTC,MCV,RBC,FE,Ferritin,TIBC,Hct,Hb,PLT],[B12,Folic_acid,tSH,Kreatinin]],b12Low):-
        (Filo='male',number(RBC),RBC>6);
        (Filo='female',number(RBC),RBC>4.9),
        number(B12), B12<130.

check_Folic([B12,Folic_acid,tSH,Kreatinin],folic):-
        number(Folic_acid), Folic_acid<3.1.

kb代码文件是

:- dynamic kb_da/4.


kb_da(patient1,['Ιωάννης Ιωάννου','Φλέμινγκ3 71410 Ηράκλειο','2810123456'],
     [50,male,na],[['Πονοκέφαλος','Aδυναμία','Έλλειψη αυτοσυγκέντρωσης'],_,_,_]).

     %Sidiropenik Anaimia   
kb_da(patient2,
    ['Δημήτρης Παπαδημητρίου','Αρχαγγέλου 17 Κοκκινοτριμιθιά Λευκωσίας','0035797273515'],
       [27,male,na], [['Πονοκέφαλος','Κούραση','Ταχυκαρδία','Δύσπνοια'],
    [4800,1,75,4.3,45,18,280,33,12,125],_,_]).

kb_da(patient3,['Δέσποινα Μπασδέκη','Πανός 19 71410 Ηράκλειο',6955457845],[24,female,no],
        [['Πονοκέφαλος','Έλλειψη αυτοσυγκέντρωσης','Ελλειπής διατροφή','Δύσπνοια','Ταχυκαρδία'],
        [4300,1,75,3.7,41,18,250,30,10,180],_,_]).

kb_da(patient4,['Δήμητρα Περπερίδου','Καραμανώλη 5 55142 Θεσσαλονίκη',6977458521],[32,female,yes],
        [['Πονοκέφαλος','Έλλειψη αυτοσυγκέντρωσης','Ελλειπής διατροφή','Δύσπνοια','Ταχυκαρδία','Ταχυκαρδία'],
        [4800,1,72,3.7,50,15,280,32,10,180],_,_]).

 %Stigma Mesogeiaki Anaimia 

kb_da(patient5,['Manolis Manolaou','Epaminondos 24 55142 Θεσσαλονίκη',6985245125],[50,male,na],
        [['Πονοκέφαλος','Δύσπνοια','Ταχυκαρδία','Ταχυκαρδία','μητερα_Στίγμα'],
        [4800,1,78,7,45,15,320,39,13,125],_,_]).        

kb_da(patient6,['Manolis Pavlou','Venizelou 24 59100 Veroia',6977148545],[25,male,na],
        [['Πονοκέφαλος','Δύσπνοια','Ταχυκαρδία','πατερας_Μεσογειακή',],
        [4800,1,78,7.8,45,15,320,39,13,155],_,_]).


kb_da(patient7,['Maria Papadopoulou','Venizelou 24 59100 Veroia',6985478452],[42,female,na],
        [['Πονοκέφαλος','Δύσπνοια','Ταχυκαρδία','Ελλειπής διατροφή','μητερα_Μεσογειακή'],
        [4800,1,78,7.8,45,15,320,39,13,155],_,_]).


% Mesogeiaki Anaimia    

kb_da(patient8,['Μαρία Παπανικολάου','Βετσοπούλου 24 59100 Αλεξάνδρεια',6974582545],[42,female,no],
        [['Πονοκέφαλος','Δύσπνοια','Αδυναμία','Ταχυκαρδία','Ελλειπής διατροφή','πατερας_Στίγμα','μητερα_Μεσογειακή','Ιδιαίτερη'],
        [4800,1,85,5.5,45,22,320,39,13,155],_,
        [3,hbA2,hbS,5,schema_RBC]]).

kb_da(patient9,['Γεώργιος Παπαδήμου','Παπανικολάου 58 47854 Βόλος',6974585124],[85,male,na],
        [['Πονοκέφαλος','Ωχρότητα','πατερας_Μεσογειακή','πατερας_Μεσογειακή','Ιδιαίτερο'],
        [4800,1,85,5.5,45,22,320,39,13,155],_,
        [3,hbA2,hbS,5,schema_RBC]]).


kb_da(patient10,['Γεώργιος Καρανικόλας','Χαριλάου Τρικούπη 58 56954 Θεσσαλονίκη',6974585412],[45,male,na],
        [['Πονοκέφαλος','Ωχρότητα','πατερας_Μεσογειακή','μητερα_Στίγμα','Ιδιαίτερη'],
        [4400,1,75,5.5,45,22,320,39,13,125],_,
        [4,hbA2,hbS,2,schema_RBC]]).        

%Β12

kb_da(patient11,['Παναγιώτης Μπομπότης','Αιγαίου 3 17122 Ν.Σμύρνη Αττικης ',6974585123],[22,male,no],
        [['Πονοκέφαλος','Ωχρότητα','Απώλεια βάρους','Απώλεια όρεξης'],
        [4400,1,100,3.5,45,22,320,39,13,125],
        [125,3.5,tSH,creatinine],_]).       



kb_da(patient12,['Δήμητρα Καρανικόλα','Χαριλάου Τρικούπη 58 56954 Θεσσαλονίκη',6974585412],[24,female,na],
        [['Απώλεια βάρους','Απώλεια όρεξης'],
        [4800,1,100,3.7,45,22,320,39,13,170],
        [125,2,tSH,creatinine],_]).     

%Foliko O3i


kb_da(patient13,['Κίμωνας Ιωαννίδης','Βρυλήσια Αττικής',6984575625],[65,male,no],
        [['Απώλεια βάρους','Απώλεια όρεξης'],
        [4800,1,100,5.5,45,22,320,39,13,170],
        [125,2,tSH,creatinine],_]). 


kb_da(patient14,['Ιουλια Αναστασιάδου','Κουντουριωτη 3 54625 Θεσσαλονίκη',6958475202],[35,female,yes],
        [['Απώλεια βάρους','Ωχρότητα','Απώλεια όρεξης'],
        [4800,1,100,3.7,45,22,320,39,13,170],
        [145,2,tSH,creatinine],_]). 

%Drepanokitarwsi

kb_da(patient15,['Βασίλης Παπακωσταντίνου','Μητροπόλεως 18 74125 Ν. Ιωνία',6955447751],[35,male,no],
        [['Απώλεια βάρους','Απώλεια όρεξης'],
        [4800,2,100,3.7,45,22,320,39,13,170],
        [hbA1,hbA2,1,hbF,'Δρεπάνι'],_]).    

kb_da(patient16,['Θοδωρής Onir','Καραμανλή 45 74125 Ν.Ιωνία',6977457845],[38,male,no],
        [['Απώλεια βάρους','Ωχρότητα','Απώλεια όρεξης'],
        [4400,2,100,3.7,45,22,320,39,13,170],
        [hbA1,hbA2,2,hbF,'Δρεπάνι'],_]).            


%Σφαιροκυττάρωση

kb_da(patient17,['Όλγα Σαμανίδου','Κηφισιάς 45 74125 Κηφισιά',6985544125],[29,female,yes],
        [['Πονοκέφαλος','Δύσπνοια','Αδυναμία','Απώλεια βάρους','Ωχρότητα','Απώλεια όρεξης'],
        [4900,2,100,3.2,45,28,320,39,13,120],
        [hbA1,hbA2,0,hbF,'Σφαίρα'],_]).


kb_da(patient18,['Σοφία Χατζηπαυλή','Γεωργίου Βλαστού 12 45785 Κώς',6974545455],[18,female,no],
        [['Πονοκέφαλος','Αδυναμία','Ωχρότητα','Απώλεια όρεξης'],
        [4900,2,100,3.2,45,28,320,39,13,170],
        [hbA1,hbA2,0,hbF,'Σφαίρα'],_]). 

%Den iparxei provlima

kb_da(patient19,['Βλάση Μπονάτσο','Παπαμιχαήλ 54 14585 Αθήνα',6985545212],[58,male,no],
        [['Αδυναμία','Ωχρότητα','Απώλεια όρεξης'],
        [4900,2,100,3.2,45,28,320,39,13,170],
        [hbA1,hbA2,0,hbF,'Κανονικό'],_]).

kb_da(patient20,['Μαρία Παπαμιχαήλ','Κονίτσης 54 59100 Βέροια',6984525154],[42,female,no],
        [['Αδυναμία','Ωχρότητα','Απώλεια όρεξης'],
        [4900,2,99,3.2,45,28,320,45,13,170],
        [hbA1,hbA2,2,hbF,'Κανονικό'],_]).       

1 个答案:

答案 0 :(得分:3)

以下是一些评论。

1mo,始终认真对待系统生成的警告并将其删除。你有各种单例变量,其中一些是问题,有些则不是。事实上,在规则check_HCT_Hb_FE中有FEFe

check_HCT_Hb_FE([[WBC,RTC,MCV,RBC,Fe,Ferritin,TIBC,Hct,Hb,PLT],[Hlikia,Filo,Egkimosini]],hctLow):-
%                                 ^^ was FE
        (  Filo='male', * ...
        ;  Filo='female',number(Hct),number(Hb),number(Fe), Hct<36,Hb<10,Fe<45
        ;  Filo='male', * ...
        ).

2do,我不清楚使用number/1是否有道理。算术谓词如Fe<45正在测试有效值,并在出现错误时产生错误。

3tio,有一些奇怪的语法(否则无关)。搜索person6,]

4to,为了解决问题我将以下几行添加到你的程序中:

:- op(950, fy, *).
*_.

在这种情况下,由于你说铁缺乏是预期的,所以很容易:

rule(kb_da(UserId,DataCom,PersData,
    [Symptoms,FullBloodTest,SpecBloodTest,ElectricalHb]), Diagnosis) :- 
        * symptoms(Symptoms,symptPos),  
        * check_WBC_PLT(FullBloodTest,noPancytopenia),
        * check_RTC(FullBloodTest,rtcLess2),
        * check_MCV(FullBloodTest,mcvLow),
        * checkFerritin(FullBloodTest,ferLow),
        check_HCT_Hb_FE([FullBloodTest,PersData],hctLow),
        * checkRBC([FullBloodTest,PersData],rbcLow),
        Diagnosis  = 'Iron Deficiency'.

这个高度概括的程序已经失败了,所以很明显问题是在这个目标check_HCT_Hb_FE/2内,特别是失败的目标是

check_HCT_Hb_FE([[4300,1,75,3.7,41,18,250,30,10,180],[24,female,no]],hctLow)

但是,在这种情况下,三个条件Hct<36,Hb<10,Fe<45不正确,事实上它们被实例化为30<36,10<10,41<4510<10不成立。