(planta-industrial *sin-valor
	(especializaciones (Mi-Planta-Industrial))
	(dispositivo *sin-valor*))


(Mi-Planta-Industrial *sin-valor*
	(generalizaciones (planta-industrial))
	(dispositivo D1)
	(dispositivo D2)
	(dispositivo D3))


(dispositivo *sin-valor*
	(especializaciones (D1 D2 D3))
	(sensor *sin-valor*)
	(aviso *sin-valor*
		(valores-posibles cadena)
		(metodos (prolog))
		(clausulas-prolog (
			((aviso ?x ?av):-
				(sensor ?x ?sen)
				(estado-sensor ?sen normal)
				(eval "Funcionamiento NORMAL" ?av))
			((aviso ?x ?av):-
				(sensor ?x ?sen)
				(estado-sensor ?sen alerta)
				(eval "Funcionamiento ALERTA" ?av))
			((aviso ?x ?av):-
				(sensor ?x ?sen)
				(estado-sensor ?sen critico)
				(eval "Funcionamiento CRITICO" ?av)))))
	(estado-dispositivo *sin-valor
		(valores-posibles (on off))
		(metodos (prolog))
		(clausulas-prolog (
			((estado-dispositivo ?x ?estado-D):-
				(sensor ?x ?sen)
				(estado-sensor ?sen normal)
				(eval 'on ?estado-D))
			((estado-dispositivo ?x ?estado-D):-
				(sensor ?x ?sen)
				(estado-sensor ?sen alerta)
				(eval 'on ?estado-D))
			((estado-dispositivo ?x ?estado-D):-
				(sensor ?x ?sen)
				(estado-sensor ?sen critico)
				(eval 'off ?estado-D)))))
	(reseteo *sin-valor*
		(valores-posibles numero)
		(metodos (funcion))
		(funcion (reset estado-dispositivo dispositivo))
		(funcion (reset contador sensor))))


(D1 *sin-valor*
	(generalizaciones (dispositivo))
	(sensor s1)
	(sensor s2))
(D2 *sin-valor*
	(generalizaciones (dispositivo))
	(sensor s3))
(D3 *sin-valor*
	(generalizaciones (dispositivo))
	(sensor s4))


(sensor *sin-valor*
	(especializaciones (s1 s2 s3 s4))
	(LIA *sin-valor*
		(valores-posibles numero))
	(LIR *sin-valor*
		(valores-posibles numero))
	(LSA *sin-valor*
		(valores-posibles numero))
	(LSR *sin-valor*
		(valores-posibles numero))
	(CMA *sin-valor*
		(valores-posibles numero))
	(valor-sensor *sin-valor*
		(valores-posibles numero)
		(metodos (funcion))
		(funcion (acepta-valor-sensor sensor)))
	(contador *sin-valor*
		(valores-posibles numero)
		(metodos (prolog))
		(clausulas-prolog (
			((contador ?x ?valor):-
				(estado-sensor ?x ?estado-S)
				(eval (= ?estado-S 'alerta))
				(eval 0 ?valor)))))
	(estado-sensor *sin-valor*
		(valores-posibles (normal alerta critico))
		(metodos (prolog))
		(clausulas-prolog (
			((estado-sensor ?x ?estado):-
				(LIA ?x ?LIAsensor)
				(LSA ?x ?LSAsensor)
				(valor-sensor ?x ?valor)
				(eval(> ?valor ?LIAsensor))
				(eval(< ?valor ?LSAsensor))
				(eval 'normal ?estado))
			((estado-sensor ?x ?estado):-
				(LIA ?x ?LIAsensor)
				(LIR ?x ?LIRsensor)
				(valor-sensor ?x ?valor)
				(eval(> ?valor ?LIAsensor))
				(eval(< ?valor ?LIRsensor))
				(eval 'alerta ?estado))		
			((estado-sensor ?x ?estado):-
				(LSR ?x ?LSRsensor)
				(LSA ?x ?LSAsensor)
				(valor-sensor ?x ?valor)
				(eval(> ?valor ?LSRsensor))
				(eval(< ?valor ?LSAsensor))
				(eval 'alerta ?estado))
			((estado-sensor ?x ?estado):-
				(LIR ?x ?LIRsensor)
				(LSR ?x ?LSRsensor)
				(valor-sensor ?x ?valor)
				(eval(> ?valor ?LIRsensor))
				(eval(< ?valor ?LSRsensor))
				(eval 'critico ?estado))
			((estado-sensor ?x ?estado):-
				(estado-sensor ?x alerta)
				(contador ?x ?cont)
				(CMA ?x ?CMAsensor)
				(eval(> ?cont ?CMAsensor))
				(eval 'critico ?estado))))))


(s1 *sin-valor*
	(generalizaciones (sensor))
	(LIA 60)
	(LIR 70)
	(LSA 120)
	(LSR 130)
	(CMA 3)
	(contador 0))
(s2 *sin-valor*
	(generalizaciones (sensor))
	(LIA 20)
	(LIR 40)
	(LSA 160)
	(LSR 180)
	(CMA 3)
	(contador 0))
(s3 *sin-valor*
	(generalizaciones (sensor))
	(LIA 60)
	(LIR 70)
	(LSA 120)
	(LSR 130)
	(CMA 5)
	(contador 0))
(s1 *sin-valor*
	(generalizaciones (sensor))
	(LIA 60)
	(LIR 70)
	(LSA 120)
	(LSR 130)
	(CMA 3)
	(contador 0))
