Especificación de Tipos Abstractos de Datos (T.A.D.)Soluciones

Alternativa a la ecuación suma (suc (x), y) = suma (x, suc (y)) :
suma (suc (x), y) = suc (suma (x, y))

Cualquiera de las dos ecuaciones es válida, siendo redundante poner ambas.

Ejercicio: Escribir la deducción ecuacional para llegar desde el ejemplo "suma (suc(suc(cero)), suc(cero))" hasta su término canónico. Comprobar que es el mismo que con la otra ecuación.


Ecuaciones para la igualdad entre naturales:
igual (cero, cero) = cierto
igual (suc (x), cero) = falso
igual (cero, suc (x)) = falso
 igual (suc(x), suc (y))= igual (x, y)

Una alternativa para la tercera ecuación sería

igual (x, y) = igual (y, x)

de este modo que si tuviéramos un término de la forma "igual (cero, suc (x))" aplicaríamos primero esta ecuación y a continuación podríamos aplicar la segunda para ver que su valor es falso.

Generadoras impuras {cero, pred, suc}:
El conjunto es impuro porque podemos tener varios términos que representen un mismo valor.

    cero = pred (suc (cero)) = pred (suc (suc (pred (cero))))


Insuficiencia de la ecuación pred (suc (x)) = x :
No es suficiente ya que no es aplicable a términos como suc(pred(cero)), suc(suc(pred(pred(cero)) en que la operación "suc" antecede a "pred".

Ejercicio: escribir las ecuaciones que arreglen el problema anterior.


Alternativa a la ecuación suc (pred (x)) = x :
pred (suc (x)) = suc (pred (x))

Aplicando esta ecuación primero, se puede aplicar a continuación la primera de las ecuaciones.


Operaciones TAD conjunto
vacío: -> conjunto                                                crea el conjunto vacío
añadir: natural x conjunto -> conjunto
unión: conjunto x conjunto -> conjunto
intersección: conjunto x conjunto -> conjunto
pertenece: natural x conjunto -> bool
cardinal: conjunto -> natural
esvacío: conjunto -> bool

Generadoras impuras vacío y añadir:
Como se ha dicho, en los conjuntos no importa el orden en que se añaden los elementos, por tanto se ha de escribir una ecuación que lo diga explícitamente. Ejercicio: escribir dicha ecuación antes de volver a la página anterior.

Generadoras impuras vacío y añadir 2:
Falta otra ecuación que haga equivalentes los conjuntos en que se haya insertado dos veces el mismo elemento. Ejercicio: escribir dicha ecuación antes de volver a la página anterior.

Generadoras impuras vacío y añadir 3:
No hace falta más ecuaciones.

Unión de conjuntos:
unión (vacío, C) = C
unión (añadir (x, C), C2) = unión (C, añadir (x, C2))

Cabe remarcar que en la segunda ecuación no importa si al añadir x a C2, éste ya estaba incluido, porque ya se han definido las ecuaciones que especifican que no importa si se añade dos veces un mismo elemento a un conjunto.

Ejercicio: escribir una alternativa para la parte derecha de la segunda ecuación. La solución puede verse en la especificación final de conjuntos.


Pertenencia de conjuntos:
pertenece (x, vacío) = falso
pertenece (x, añadir (x, C)) = cierto
x=/=y ==> pertenece (x, añadir (y, C)) = pertenece (x, C)

Intersección de conjuntos:
intersección (vacío, C) = vacío
pertenece (x, C2) ==> intersección (añadir (x, C), C2) = añadir (x, intersección (C, C2))
no pertenece (x, C2) ==> intersección (añadir (x, C), C2) = intersección (C, C2)

Error en el cardinal:
Es incorrecta porque si se añade dos veces el mismo elemento a un conjunto no se puede garantizar que se apliquen antes las ecuaciones que eliminan duplicados a la que calcula el cardinal del conjunto.
Por ejemplo, si tenemos el conjunto  añadir (x, añadir (x, vacío))   se pueden aplicar las ecuaciones de las siguientes formas:
 
cardinal (añadir (x, añadir (x, vacío)))
cardinal (añadir (x, vacío))   --  2ª ecuación generadora
suc (cardinal (vacío))   --  2ª ecuación cardinal
suc (cero)   -- 1ª ecuación cardinal
cardinal (añadir (x, añadir (x, vacío))
suc (cardinal (añadir (x, vacío)))    -- 2ª ecuación cardinal
suc (suc (cardinal (vacío)))   -- 2ª ecuación cardinal
suc (suc (cero))   -- 1ª ecuación cardinal

Puede verse la inconsistencia al salir resultados diferentes, por tanto las ecuaciones no pueden ser válidas.
Para arreglarlo dividiremos la 2ª ecuación del cardinal en dos posibilidades, dependiendo de si el elemento a contar está o no en el resto del conjunto.

Ejercicio: escribir las ecuaciones correctas del cardinal. La solución puede verse en la especificación final de conjuntos.


Conjunto vacío:
esvacío (vacío) = cierto
esvacío (añadir (x, C) = falso


  Autoría
Correo de contacto
Fecha de actualización