algebraica-conjuntos
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