:-unknown(trace,fail).
%----------------------- %BASE DES FAITS ETABLIS
%-----------------------
bois.
petite.
metal.
pierre.
grande.
%---------------------- %BASE DES REGLES %----------------------
bois:-petite.
metal:-grande.
pierre:-grande.
% MOTEUR D’INFERENCES
%-----------------------
si(C,P,_) :- C,!,P.
si(_,_,Q) :- Q.
expertiser(L) :-
si(effacer(L),ecrire_succes(L),ecrire_echec(L)).
effacer([],[]).
effacer([But|AutresButs],[[But|TraceSousButs]|TraceAutresButs]):-
rule(But,SousButs),
effacer(SousButs,TraceSousButs),
effacer(AutresButs,TraceAutresButs).
ecrire_succes(L, Trace) :-
print_conjonction(L,succes),
afficher_trace(Trace).
afficher_trace(T) :-
write('COMMENT : '), nl, % afficher la trace à partir de la première colonne
afficher_trace(T,0).
afficher_trace([],_) :- !.
肯定是:
?- expertiser([bois]).
le fait bois est etabli
但是,它只是返回假,为什么?