fork download
  1. (deftemplate symptom
  2. (slot name))
  3.  
  4. (deftemplate diagnosis
  5. (slot result))
  6.  
  7. (deffacts patient-data
  8. (symptom (name swollen-parotid-glands))
  9. (symptom (name fever))
  10. (symptom (name headache-face-swelling))
  11. )
  12.  
  13. (defrule mumps
  14. (symptom (name swollen-parotid-glands))
  15. (symptom (name fever))
  16. (symptom (name headache-face-swelling))
  17. =>
  18. (assert (diagnosis (result MUMPS)))
  19. )
  20.  
  21. (defrule possible-mumps
  22. (symptom (name swollen-parotid-glands))
  23. (symptom (name fever))
  24. (not (symptom (name headache-face-swelling)))
  25. =>
  26. (assert (diagnosis (result POSSIBLE_MUMPS)))
  27. )
  28.  
  29. (defrule normal-state
  30. (not (symptom (name swollen-parotid-glands)))
  31. =>
  32. (assert (diagnosis (result NORMAL_STATE)))
  33. )
  34.  
  35. (defrule print-diagnosis
  36. ?d <- (diagnosis (result ?r))
  37. =>
  38. (printout t "DIAGNOSIS: " ?r crlf)
  39. )
  40.  
  41. (reset)
  42. (run)
  43.  
  44. (exit)
  45.  
Success #stdin #stdout 0.01s 5304KB
stdin
Standard input is empty
stdout
DIAGNOSIS: MUMPS