TAD Ascensor Automático géneros ascensor exporta observadores

Anuncio
TAD Ascensor Automático
géneros
ascensor
exporta
observadores, generadores
usa
piso, nat, bool
igualdad observacional

(∀a, a0 : ascensor) a =obs


pisoActual(a) = pisoActual(a0 ) ∧
a0 ⇐⇒ personas(a, P B) = personas(a0 , P B) ∧
personas(a, 1er) = personas(a0 , 1er)
observadores básicos
pisoActual
: ascensor
−→ piso
#personas
: ascensor × piso −→ nat
generadores
nuevoAscensor :
−→ ascensor
llegaPersona
: ascensor × piso −→ ascensor
...
axiomas
pisoActual(nuevoAscensor) ≡ PB
pisoActual(llegaPersona(a, p)) ≡ if p 6= pisoActual(a) then
pisoActual(a)
else
if #personas(a, pisoActual(a)) < 2 then
pisoActual(a)
else
if #personas(a, otroPiso(pisoActual(a)) < 3 then
otroPiso(pisoActual(a))
else
pisoActual(a)
fi
fi
fi
#personas(nuevoAscensor, p) ≡ 0
#personas(llegaPersona(a, p), p0 )) ≡ if p 6= pisoActual(a) ∨ #personas(a, pisoActual(a)) < 2 then
#personas(a, p0 ) + β(p = p0 )
else
if p0 = pisoActual(a) then
0
else
if #personas(a, otroPiso(pisoActual(a))) < 3 then
#personas(a, otroPiso(pisoActual(a)))
else
#personas(a, otroPiso(pisoActual(a))) - 3
fi
fi
fi
Fin TAD
1
TAD Ascensor Automático 2.0
géneros
ascensor
exporta
observadores, generadores
usa
piso, nat, bool
igualdad observacional

(∀a, a0 : ascensor) a =obs


pisoActual(a) = pisoActual(a0 ) ∧
a0 ⇐⇒ personas(a, P B) = personas(a0 , P B) ∧
personas(a, 1er) = personas(a0 , 1er)
observadores básicos
pisoActual : ascensor
#personas : ascensor × piso
−→ piso
−→ nat
generadores
nuevoAscensor:
−→ ascensor
llegaPersona : ascensor × piso
−→ ascensor
botón
: ascensor a × piso p −→ ascensor
{#personas(a, p) > 0}
...
axiomas
pisoActual(nuevoAscensor) ≡ PB
pisoActual(llegaPersona(a, p)) ≡ if p 6= pisoActual(a) then
pisoActual(a)
else
if #personas(a, pisoActual(a)) < 2 then
pisoActual(a)
else
if #personas(a, otroPiso(pisoActual(a)) < 3 then
otroPiso(pisoActual(a))
else
pisoActual(a)
fi
fi
fi
pisoActual(botón(a, p)) ≡ if p = pisoActual(a) ∨ #personas(a, otroPiso(pisoActual(a))) ≥ 3 then
pisoActual(a)
else
otroPiso(pisoActual(a))
fi
#personas(nuevoAscensor, p) ≡ 0
#personas(llegaPersona(a, p), p0 )) ≡ if p 6= pisoActual(a) ∨ #personas(a, pisoActual(a)) < 2 then
#personas(a, p0 ) + β(p = p0 )
else
if p0 = pisoActual(a) then
0
else
if #personas(a, otroPiso(pisoActual(a))) < 3 then
#personas(a, otroPiso(pisoActual(a)))
else
#personas(a, otroPiso(pisoActual(a))) - 3
fi
fi
fi
2
#personas(botón(a, p), p0 ) ≡ if p = pisoActual(a) then
#personas(a, p0 )
else
if p 6= p0 then
0
else
#personas(a, p0 ) - if #personas(a, p0 ) ≥ 3 then 3 else 0 fi
fi
fi
Fin TAD
3
Descargar