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


piso?(a) = piso?(a0 ) ∧
a0 ⇐⇒ personas(a, P B) = personas(a0 , P B) ∧
personas(a, 1er) = personas(a0 , 1er)
observadores básicos
piso?
: ascensor
−→ piso
personasEn
: ascensor × piso −→ nat
generadores
crearAscensor :
−→ ascensor
llegaPersona : ascensor × piso −→ ascensor
...
axiomas
piso?(crearAscensor) ≡ PB
piso?(llegaPersona(a, p)) ≡ if p 6= piso?(a) then
piso?(a)
else
if personasEn(a, piso?(a)) < 2 then
piso?(a)
else
if personasEn(a, otroPiso(piso?(a)) < 3 then
otroPiso(piso?(a))
else
piso?(a)
fi
fi
fi
personasEn(crearAscensor, p) ≡ 0
personasEn(llegaPersona(a, p), p0 )) ≡ if p 6= piso?(a) ∨ personasEn(a, piso?(a)) < 2 then
personasEn(a, p0 ) + β(p = p0 )
else
if p0 = piso?(a) then
0
else
if personasEn(a, otroPiso(piso?(a))) < 3 then
personasEn(a, otroPiso(piso?(a)))
else
personasEn(a, otroPiso(piso?(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


piso?(a) = piso?(a0 ) ∧
a0 ⇐⇒ personas(a, P B) = personas(a0 , P B) ∧
personas(a, 1er) = personas(a0 , 1er)
observadores básicos
piso?
: ascensor
personasEn
: ascensor × piso
−→ piso
−→ nat
generadores
crearAscensor :
−→ ascensor
llegaPersona
: ascensor × piso
−→ ascensor
llamarAscensor : ascensor a × piso p −→ ascensor
{personasEn(a, p) > 0}
...
axiomas
piso?(crearAscensor) ≡ PB
piso?(llegaPersona(a, p)) ≡ if p 6= piso?(a) then
piso?(a)
else
if personasEn(a, piso?(a)) < 2 then
piso?(a)
else
if personasEn(a, otroPiso(piso?(a)) < 3 then
otroPiso(piso?(a))
else
piso?(a)
fi
fi
fi
piso?(llamarAscensor(a, p)) ≡ if p = piso?(a) ∨ personasEn(a, otroPiso(piso?(a))) ≥ 3 then
piso?(a)
else
otroPiso(piso?(a))
fi
personasEn(crearAscensor, p) ≡ 0
personasEn(llegaPersona(a, p), p0 )) ≡ if p 6= piso?(a) ∨ personasEn(a, piso?(a)) < 2 then
personasEn(a, p0 ) + β(p = p0 )
else
if p0 = piso?(a) then
0
else
if personasEn(a, otroPiso(piso?(a))) < 3 then
personasEn(a, otroPiso(piso?(a)))
else
personasEn(a, otroPiso(piso?(a))) - 3
fi
fi
fi
2
personasEn(llamarAscensor(a, p), p0 ) ≡ if p = piso?(a) then
personasEn(a, p0 )
else
if p 6= p0 then
0
else
personasEn(a, p0 ) - if personasEn(a, p0 ) ≥ 3 then 3 else 0
fi
fi
fi
Fin TAD
3
Descargar