//--------------------------------------------//
// Especificacion Algebraica TAD Cola //
// Autor: Pablo Sanchez (p.sanchez@unican.es) //
// http://personales.unican.es/sanchezbp //
//--------------------------------------------//

espec Cola

usa Boolean, Natural

generos Queue(Element) as Queue

parametro
generos Element como E
fparametro

operaciones
emptyQueue : -> Queue
add : Queue E -> Queue
parcial peek : Queue -> E
parcial remove : Queue -> Queue
isEmpty : Queue -> Boolean
size : Queue -> Natural
vars
s : Queue; x, y, z : Element;
precondiciones
[isEmpty(s) != TRUE] remove(s), peek(s)
ecuaciones
// Las generadoras son emptyQueue y add(s,x) y son libres
// Los patrones del tipo son:
// - emptyQueue
// - add(s,x)
size(emptyQueue) = 0
size(add(s,x)) = 1 + size(s)

remove(add(emptyQueue,x)) = emptyQueue
remove(add(add(s,x),y)) = add(remove(add(s,x)),y)

peek(add(emptyQueue,x)) = x
peek(add(add(s,x),y)) = peek(add(s,x))

isEmpty(emptyQueue) = TRUE
isEmpty(add(s,y)) = FALSE
fespec

Última modificación: viernes, 26 de mayo de 2017, 11:21