cola_(queu)
//--------------------------------------------//
// 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