espec Conjunto
usa Booleano;

parametro formal
dominio Elemento
operaciones
igual: Elemento Elemento -> Booleano
var
x, y, z : Elemento;
ecuaciones
igual(x,x) = TRUE;
igual(x,y) = igual(y,x)
[igual(x,y) and igual(y,z)] igual(x,z) = TRUE
fparametro

dominios Conjunto(Elemento) como Conjunto;

operaciones
// Operaciones generadoras
conjuntoVacio : -> Conjunto
anhade : Conjunto Elemento -> Conjunto
// Operaciones Observadoras
pertenece : Conjunto Elemento -> Booleano
esVacio : Conjunto -> Booleano
// Operaciones modificadoras
union : Conjunto Conjunto -> Conjunto
elimina : Conjunto Elemento -> Conjunto

variables
c, c2 : Conjunto; x, y: Elemento;
ecuaciones
// Buscamos unificar términos
anhade(anhade(c,x),x) = anhade(c,x)
anhade(anhade(c,x),y) = anhade(anhade(c,y),x)

pertenece(conjuntoVacio,e) = FALSE
pertenece(anhade(c,e),e) = TRUE

esVacio(conjuntoVacio) = TRUE
esVacio(anhade(c,e)) = FALSE

pertenece(conjuntoVacio,x) = FALSE
pertenece(anhade(c,x),y) = or(igual(x,y),pertence(c,y))

union(conjuntoVacio,c2) = c2
union(anhade(c,e),c2) = anhade(union(c,c2),e)

borra(conjuntoVacio,e) = conjuntoVacio
[igual(x,y) = TRUE] borra(anhade(c,x),y) = borra(c,y)
[igual(x,y) = FALSE] borra(anhade(c,x),y) = anhade(borra(c,y),x)

fspec

Última modificación: viernes, 26 de mayo de 2017, 10:24