(defrule determine-point-surface-state ""
   (or (and (working-state engine does-not-start)
            (spark-state engine irregular-spark))
       (symptom engine low-output))
   (not (repair ?))
   =>
   (bind ?response
      (ask-question "What is the surface state of the
points (normal/burned/contaminated)? "
                    normal burned contaminated))
   (if (eq ?response burned)
       then (assert (repair "Replace the points."))
       else (if (eq ?response contaminated)
                then (assert (repair "Clean the
points.")))))