; your code goes here
(defrule R1-disco-duro
   (equipo pc_laboratorio1)
   (sintoma ruido_disco)
   =>
   (assert (componente-sospechoso disco_duro))
)

(defrule R2-memoria-ram
   (equipo pc_laboratorio1)
   (sintoma no_inicia)
   =>
   (assert (componente-sospechoso memoria_ram))
)

(defrule R3-fuente-poder
   (equipo pc_laboratorio2)
   (sintoma no_enciende)
   =>
   (assert (componente-sospechoso fuente_poder))
)

(defrule R4-tarjeta-video
   (equipo pc_multimedia)
   (sintoma pantalla_negra)
   =>
   (assert (componente-sospechoso tarjeta_video))
)

(defrule R5-bateria
   (equipo laptop_juan)
   (sintoma se_apaga)
   =>
   (assert (componente-sospechoso bateria))
)

(defrule R6-cargador
   (equipo laptop_docente)
   (sintoma no_carga)
   =>
   (assert (componente-sospechoso cargador))
)

;; --- REGLAS R7 A R12: Generación del diagnóstico ---

(defrule R7-diagnostico-disco
   (componente-sospechoso disco_duro)
   =>
   (assert (diagnostico revisar_disco_duro))
)

(defrule R8-diagnostico-ram
   (componente-sospechoso memoria_ram)
   =>
   (assert (diagnostico revisar_memoria_ram))
)

(defrule R9-diagnostico-fuente
   (componente-sospechoso fuente_poder)
   =>
   (assert (diagnostico revisar_fuente_poder))
)

(defrule R10-diagnostico-video
   (componente-sospechoso tarjeta_video)
   =>
   (assert (diagnostico revisar_tarjeta_video))
)

(defrule R11-diagnostico-bateria
   (componente-sospechoso bateria)
   =>
   (assert (diagnostico revisar_bateria))
)

(defrule R12-diagnostico-cargador
   (componente-sospechoso cargador)
   =>
   (assert (diagnostico revisar_cargador))
)

;; --- Regla para mostrar los diagnósticos en la salida (stdout) ---
(defrule imprimir-diagnostico
   (diagnostico ?d)
   =>
   (printout t "DIAGNOSTICO OBTENIDO: " ?d crlf)
)

(deffacts caso-prueba
   (equipo pc_laboratorio1)
   (sintoma ruido_disco)
   (sintoma no_inicia)
)

(reset)
(run)
(facts)
(exit)
; empty line at the end