database
xpositive(symbol,symbol)
xnegative(symbol,symbol)
predicates
run
plant_is(symbol)
it_is(symbol)
positive(symbol,symbol)
negative(symbol,symbol)
clear_facts
remember(symbol,symbol,symbol)
ask(symbol,symbol)
goal
run.
clauses
run:-
plant_is(X),!,
write("\nYour plant may be a(n) ",X),
nl,nl,clear_facts.
run:-
write("\nUnable to determine what"),
write(" your plant is. \n\n"),clear_facts.
positive(X,Y) if xpositive(X,Y),!.
positive(X,Y) if not(negative(X,Y)),! and ask(X,Y).
negative(X,Y) if xnegative(X,Y),!.
ask(X,Y):-
write(X," it ",Y,"?\n"),
readln(Reply),
remember(X,Y,Reply).
remember(X,Y,y):-
asserta(xpositive(X,Y)).
remember(X,Y,n):-
asserta(xnegative(X,Y)),
fail.
clear_facts:-
retract(xpositive(_,_)),fail.
clear_facts:-
retract(xnegative(_,_)),fail.
clear_facts:-
write("\n\nPlease press the space bar to Exit"),
readchar(_).
plant_is(chrysanthemum) if
it_is(ornamental)and
positive(has,colorful_flowers).
plant_is(rose) if
it_is(ornamental) and
positive(has,sting)and
positive(does,defoliate).
plant_is(cacti) if
it_is(ornamental)and
it_is(food)and
positive(has,lanceolar_leaf).
plant_is(apple) if
it_is(wood) and
it_is(food)and
not(positive(has,nice_flower))and
positive(does,defoliate).
plant_is(peach) if
it_is(wood) and
it_is(food)and
positive(has,nice_flower)and
positive(does,defoliate).
plant_is(aloe) if
it_is(ornamental) and
it_is(food)and
positive(has,succulent_leaf).
plant_is(pea) if
it_is(ornamental) and
it_is(food).
plant_is(pinee) if
it_is(wood) and
positive(had,big_body)and
positive(has,lanceolar_leaf).
it_is(ornamental) if
it_is(herbage) and
positive(has,nice_flower).
it_is(herbage) if
positive(is,herb).
it_is(wood) if
positive(is,perennial).
it_is(wood) if
positive(is,woody).
it_is(food) if
positive(is,food).
it_is(herbage) if
positive(is,annual).
2022-05-23 15:06:09
3KB
植物专家系统
1