Code: Select all
                                     /*THE FOLLOWING IS THE CODE*/
/***********************************************************************************************************************************
 
                        Copyright (c) 2014 My Company
 
*********************************************************************************************************************************/
 
implement main
    open core,string
 
 
clauses
    run():-
        console::init(),
        succeed(). % place your own code here
 
 
domains
    disease,indication = symbol
    Patient,name = string
 
predicates
    hypothesis (string,disease)
    symptom (name,indication)
    response (char)
    go
clauses
    go :-
        write("What is the patient's name? "),
        readln(Patient),
        hypothesis(Patient,Disease),
        write(Patient,"probably has ",Disease,"."),nl.
 
    go :-
        write("Sorry, I don't seem to be able to"),nl,
        write("diagnose the disease."),nl.
 
    symptom(Patient,fever) :-
        write("Does ",Patient," have a fever (y/n) ?"),
        response(Reply),
        Reply='y'.
 
    symptom(Patient,rash) :-
        write("Does ",Patient," have a rash (y/n) ?"),
        response(Reply),
        Reply='y'.
 
    symptom(Patient,headache) :-
        write("Does ",Patient," have a headache (y/n) ?"),
        response(Reply),
        Reply='y'.
 
    symptom(Patient,runny_nose) :-
        write("Does ",Patient," have a runny_nose (y/n) ?"),
        response(Reply),
        Reply='y'.
 
    symptom(Patient,conjunctivitis) :-
        write("Does ",Patient," have a conjunctivitis (y/n) ?"),
        response(Reply),
        Reply='y'.
 
    symptom(Patient,cough) :-
        write("Does ",Patient," have a cough (y/n) ?"),
        response(Reply),
        Reply='y'.
 
    symptom(Patient,body_ache) :-
        write("Does ",Patient," have a body_ache (y/n) ?"),
        response(Reply),
        Reply='y'.
 
    symptom(Patient,chills) :-
        write("Does ",Patient," have a chills (y/n) ?"),
        response(Reply),
        Reply='y'.
 
    symptom(Patient,sore_throat) :-
        write("Does ",Patient," have a sore_throat (y/n) ?"),
        response(Reply),
        Reply='y'.
 
    symptom(Patient,sneezing) :-
        write("Does ",Patient," have a sneezing (y/n) ?"),
        response(Reply),
        Reply='y'.
 
    symptom(Patient,swollen_glands) :-
        write("Does ",Patient," have a swollen_glands (y/n) ?"),
        response(Reply),
        Reply='y'.
 
    hypothesis(Patient,measles) :-
        symptom(Patient,fever),
        symptom(Patient,cough),
        symptom(Patient,conjunctivitis),
        symptom(Patient,runny_nose),
        symptom(Patient,rash).
 
    hypothesis(Patient,german_measles) :-
        symptom(Patient,fever),
        symptom(Patient,headache),
        symptom(Patient,runny_nose),
        symptom(Patient,rash).
 
    hypothesis(Patient,flu) :-
        symptom(Patient,fever),
        symptom(Patient,headache),
        symptom(Patient,body_ache),
        symptom(Patient,conjunctivitis),
        symptom(Patient,chills),
        symptom(Patient,sore_throat),
        symptom(Patient,runny_nose),
        symptom(Patient,cough).
 
    hypothesis(Patient,common_cold) :-
        symptom(Patient,headache),
        symptom(Patient,sneezing),
        symptom(Patient,sore_throat),
        symptom(Patient,runny_nose),
        symptom(Patient,chills).
 
    hypothesis(Patient,mumps) :-
        symptom(Patient,fever),
        symptom(Patient,swollen_glands).
 
    hypothesis(Patient,chicken_pox) :-
        symptom(Patient,fever),
        symptom(Patient,chills),
        symptom(Patient,body_ache),
        symptom(Patient,rash).
 
    hypothesis(Patient,measles) :-
        symptom(Patient,cough),
        symptom(Patient,sneezing),
        symptom(Patient,runny_nose).
 
    response(Reply) :-
        readchar(Reply),
        write(Reply),nl.
 
 
end implement main
 
goal
    mainExe::run(main::run).