DEFINITION MODULE Pila;

TYPE PILA;
     ITEM= <<a definir>>;
     TIPO_ERROR=<<a definir>>;
     TIPO_OPERACION= PROCEDURE (ITEM);

PROCEDURE Error():TIPO_ERROR;

PROCEDURE Crear():PILA;
PROCEDURE Destruir(VAR p:PILA);

PROCEDURE EsVacia(p:PILA): BOOLEAN;
(* Pre: NOT EsVacia(p) *)
PROCEDURE Cima(p:PILA):ITEM;

PROCEDURE Apilar(VAR p:PILA; x:ITEM);
(* Pre: NOT EsVacia(p) *)
PROCEDURE Desapilar(VAR p:PILA);

PROCEDURE Aplicar(p:PILA; op:TIPO_OPERACION);

END Pila.
