Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son...

58
Teoría de Dominios y Modelos Denotacionales Universidad de Málaga Curso académico 2018-2019 Prof: Alicia Tocino Sánchez

Transcript of Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son...

Page 1: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

Teoría de Dominios y

Modelos DenotacionalesUniversidad de Málaga

Curso académico 2018-2019

Prof: Alicia Tocino Sánchez

Page 2: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

1

1. Dcpos y dcpos punteados

Profesora: Alicia Tocino Sánchez. Curso Académico 2018-2019.

Definición 1.1. Un conjunto P con una relación binaria R es parcialmente ordenado si se

cumplen las siguientes condiciones:

(1) xRx para cada x ∈ P (reflexiva)

(2) si xRy, yRz entonces xRz para cada x, y, z ∈ P (transitiva)

(3) si xRy, yRx entonces x = y para cada x, y ∈ P (antisimétrica)

Un conjunto es totalmente ordenado si todos los pares de elementos de P son comparables

mediante la relación R.

Notación 1.2. La relación R se puede expresar de varias formas: xRy, x w y, x ≤ y, (x, y). A

un conjunto parcialmente ordenado se le llamará poset.

Ejemplo 1.3. Si P = 1, 2, 3 es un conjunto entonces R = {(1, 1), (2, 2), (3, 3), (1, 2), (2, 3), (1, 3)}

es un ejemplo de orden parcial en P .

Los conjuntos finitos parcialmente ordenados (poset) se pueden representar mediante diagra-

mas de Hasse. Los segmentos unen elementos relacionados del conjunto de modo que es menor

el situado en la posición inferior. Se suprimen los segmentos que corresponden a la propiedad

transitiva (es decir, si a ≤ b y b ≤ c entonces no aparecerá el segmento correspondiente a a ≤ c).

Para evitar preocuparse por resultados no definidos (o indefinidos) se introduce un valor especial,

⊥, llamado bottom, que representa un error, un cálculo que no termina...

Observación 1.4. Observemos que los conjuntos S = {1, 2, 3} y T = {1, 3, 2} son iguales. Sin

embargo, como listas en un ordenador no serían iguales.

Ejemplo 1.5.

(1) El siguiente diagrama, verifica que ⊥ ≤ verdadero, ⊥ ≤ falso y verdadero y falso no se

pueden comparar.

Page 3: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

2

(2) El siguiente diagrama, verifica que b y c no están relacionados, f y g no están relacionados,

b ≤ g por la propiedad transitiva.

(3) El siguiente diagrama, representa un conjunto totalmente ordenado

(4) Con un diagrama similar al anterior se ve que (N,≤) es un conjunto totalmente ordenado.

(5) El siguiente diagrama, representa un conjunto parcialmente ordenado.

(6) El conjunto de naturales ordenados por la relación de divisibilidad es parcialmente orde-

nado. El diagra de Hasse de los divisores de 30, D(30), es el siguiente:

(7) Consideramos B = {true, false} y B⊥ = {⊥, true, false}. En el producto cartesiano existe

el siguiente orden parcial:

Observación 1.6. Si A y B son posets, entonces A× B = {(a, b) | a ∈ A, b ∈ B} también es un

poset con la relación (a, b) ≤ (a′, b′) si y sólo si a ≤ b y a′ ≤ b′.

Page 4: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

3

Definición 1.7. Sea (P,≤) un poset. Un elemento x ∈ P es una cota superior de un subconjunto

A ⊆ P si a ≤ x para cada a ∈ A. Se dice que x ∈ P es una cota inferior de A ⊆ P si x ≤ a

para cada a ∈ A.

Ejemplo 1.8.

(1) Del siguiente diagrama, consideramos los siguientes subconjuntos:

• A = {falso}, cota superior = {falso}, cota inferior = {⊥, falso}.

• A = {verdadero, falso}, cota superior = ∅, cota inferior = {⊥}.

(2) Del siguiente diagrama, consideramos el subconjunto A = {f, g}, cota superior = {h}, cota

Page 5: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

4

inferior = {⊥}.

(3) Del conjunto de los naturales con el orden usual (N,≤) consideramos el subconjunto A =

{números pares}, cota superior = ∅, cota inferior = {0}.

(4) Del siguiente diagrama, consideramos el subconjunto A = {b, c}, cota superior = {d, e},

cota inferior = {a}.

Definición 1.9. Sea A ⊆ P un subconjunto de un poset. Si el conjunto de cotas superiores de A

tiene mínimo, es decir, si existe x ∈ P cota superior de A tal que x ≤ b para cada b en el conjunto

de cotas superiores de A, se dice que x es el supremo de A.

Notación 1.10. Denotamos por ∨A al supremo de A. Si A = {x, y} entonces ∨A = x ∨ y.

Ejemplo 1.11.

(1) Del siguiente diagrama, consideramos el subconjunto A = {a, b}, cotas superiores = {c, d}.

Como {c, d} no tiene mínimo, entonces no existe el supremo.

(2) Del siguiente diagrama, consideramos el subconjunto A = {2}, cotas superiores = {2, 3},

supremo = {2}.

Page 6: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

5

(3) Del siguiente diagrama,

consideramos el subconjunto A = {d, e, f}, cotas superiores = {g, h, i}, supremo = {g}. El

supremo puede no estar en el subconjunto A.

(4) Sea P = B⊥ × B⊥:

• (⊥, false) ∨ (true,⊥) = (true, false)

• (⊥, false) ∨ (⊥,⊥) = (⊥, false)

• (⊥, false) ∨ (true, true) no existe

(5) Para cualquier conjunto X, se denota por P(X) al conjunto de partes de X. Se verifica

que P(X) es un poset con la relación de orden parcial dada por la inclusión de conjuntos.

El supremos está dado por la unión de conjuntos.

Si X = {1, 2, 3} entonces P(X) = {∅, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}.

Page 7: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

6

Si A = {{2}, {3}} entonces cotas superiores = {{2, 3}, {1, 2, 3}} y supremo = {2}∨{3} =

{2, 3}

Proposición 1.12. El supremo de un subconjunto, si existe, es único.

Proof. Sea A ⊆ P y sean s, s′ supremos de A. Denotamos por B al conjunto de cotas superiores

de A. Entonces, s ≤ b para cada b ∈ B. En particular, s ≤ s′. De forma análoga, s′ ≤ b para

cada b ∈ B. En particular, s′ ≤ s. De ambas desigualdades tenemos que s = s′. �

Definición 1.13. Sea P un poset y A ⊆ P un subconjunto. Se dice que x ∈ P es ínfimo de A si

es el máximo de las cotas inferiores.

Ejemplo 1.14.

(1) Del siguiente diagrama,

consideramos el subconjunto A = {a, b} no tiene ínfimo porque no tiene cotas inferiores.

Page 8: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

7

(2) Del siguiente diagrama,

consideramos el subconjunto A = {d, e}, cotas inferiores = {a, b, c}, ínfimo = {c}.

(3) Del siguiente diagrama,

consideramos el subconjunto A = {c, d, f, g, h}

cotas superiores = {a}

supremo = {a}

cotas inferiores = {h, j}

ínfimo = h

Proposición 1.15. El ínfimo de un subconjunto, si existe, es único.

La demostración se propondrá como ejercicio.

Definición 1.16. Un poset es un retículo si para cada par de elementos existe supremo e ínfimo.

Un retículo se dice completo si existe el supremo y el ínfimo para cada subconjunto.

Page 9: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

8

Ejemplo 1.17.

(1) (N,≤) es un retículo, pero no es completo. Para cada x, y ∈ N, x ≤ y, x = ínfimo, y =

supremo. En cambio A = {números pares} no tiene supremo.

(2) El siguiente diagrama,

no es un retículo porque {a, b} no tiene ínfimo.

(3) El siguiente diagrama,

es un retículo completo.

(4) El siguiente diagrama,

no es un retículo porque {c, d} y {a, b} no tiene ni ínfimo ni supremos (no son comparables).

Definición 1.18. Unb subconjunto no vacío M de un poset P se dice que es dirigido cuando

para cada par de elementos de M existe una cota superior en M . Es decir, dados dos elementos

en M podemos encontrar siempre uno mayor (también en M).

Page 10: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

9

Ejemplo 1.19.

(1) Del siguiente diagrama,

M = {b, c, d} es dirigido pero M = {a, b, c} no es dirigido.

(2) El siguiente diagrama,

M = {a, b, c} no es dirigido pero M = {c, d, e, f} sí es dirigido y ∨M = f .

(3) El conjunto de partes de X, P(X), es dirigido bajo la relación de inclusión.

(4) El subconjunto A = {números pares} de (N,≤) es un conjunto dirigido sin supremo.

Definición 1.20. Un poset P se dice completo si cada subconjunto dirigido de P tiene un

supremo en P . Es decir, ∀M ⊆ P dirigido, ∃ ∨ M . Decimos que un poset completo es un

dcpo (directed complete partial order). Cuando existe un elemento mínimo, ⊥, en un dcpo se dice

que es punteado.

Page 11: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

10

Ejemplo 1.21.

(1) El conjunto {⊥,>} con ⊥ ≤ > es un dcpo punteado.

(2) El conjunto B⊥ = {⊥, true, false} es un dcpo punteado. Se le llama dcpo de los valores de

la veracidad.

(3) Consideremos la unión disjunta N⊥ = N∪{⊥} donde ⊥ /∈ N con el orden parcial mostrado

en el diagrama de Hasse siguiente:

N⊥ es un dcpo punteado. Se tiene que ⊥ ∈ N⊥. Veamos que todos los conjuntos dirigidos

tienen supremo. Los subconjuntos dirigidos son {⊥, n} donde n ∈ N y tienen como cota

superior n cuyo supremo es el propio n. Los subconjuntos dirigidos no pueden contener

dos naturales porque no tendrían cota superior.

No hay que confundir el orden de (N,≤) (0 ≤ 1) con el de N⊥ (0 � 1, 1 � 0, 0 y 1 no son

comparables).

(4) Z⊥ = Z ∪ {⊥} con el orden parcial del diagrama es un dcpo punteado.

(5) Dado un un conjunto cualquiera P , podemos considerar P⊥ = P ∪ {⊥} donde ⊥ /∈ P es

un dcpo punteado con la relación x ≤ y si y sólo si x = y o x = ⊥.

Page 12: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

11

(6) El siguiente diagrama representa un dcpo no punteado.

(7) Si A y B son posets punteados, entonces A × B también es un dcpo punteado donde

⊥A×B = (⊥A,⊥B).

(8) Sea Q el conjunto de los números racionales, el conjunto A = {1, 1′1, 1′141, 1′414, . . .} es

una sucesión que converge a√

2 /∈ Q. Entonces, A no es un dcpo.

Page 13: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

12

Ejercicios para nota

(1) Sea T = a, b, c, d, e, f, g una lista de tareas para realizar un trabajo, de las que se sabe que

unas preceden inmediatamente a otras de la siguiente forma:

f ≤ a, f ≤ d, e ≤ b, c ≤ f, e ≤ c, b ≤ f, e ≤ g, g ≤ f.

Hallar el orden parcial. ¿Qué tareas pueden realizarse independientemente? Construir un

orden si el trabajo lo realiza una sola persona.

(2) Probar que el ínfimo de un subconjunto, si existe, es único.

(3) Probar que si A y B son posets y X ⊆ A×B es dirigido entonces los conjuntos

π0(X) = {a ∈ A | ∃ b ∈ B , (a, b) ∈ X} ⊆ A

π1(X) = {b ∈ B | ∃ a ∈ A , (a, b) ∈ X} ⊆ B

también son dirigidos.

(4) Mostrar que si A y B son dcpos yX ⊆ A×B es dirigido entonces ∨X = (∨π0(X),∨π1(X)).

Junto con ⊥A×B = (⊥A,⊥B) quedaría probado que el producto cartesiano de dcpos es un

dcpo.

(5) Sea R el conjunto formado por dos elementos. Dar un ejemplo de un conjunto X ⊆ R×R

tal que π0(X) y π1(X) son dirigidos pero X no lo es.

(6) Demostrar que N con su orden usual no es un dcpo, pero sí lo es el conjunto parcial-

mente ordenado obtenido a partir de N adjuntándole un elemento mayor que cualquier

otro elemento de N.

(7) Demostrar que un retículo completo es un dcpo punteado.

(8) ¿Cuáles de los siguientes son dcpos?

• P(X) partes de N respecto a la inclusión.

• la familia de subconjuntos finitos de N respecto a la inclusión.

• el conjunto { 1n

: n = 1, 2, . . .} respecto al orden ≤.

• el conjunto { 1n

: n = 1, 2, . . .} respecto al orden ≥.

¿Cuáles son punteados?

Page 14: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

13

Ejercicios para programar

(1) Desarrollar un programa para introducir un conjunto de números o carácteres P y una

relación de orden R entre ellos (dada mediante parejas de elementos) para saber si la

relación introducida es un orden parcial.

(2) Obtener todos los órdenes parciales del conjunto de números P = {a, b, c, d}.

(3) Dado un conjunto de números P , una relación de orden R y un subconjunto A ⊆ P ,

comprobar si el subconjunto A es dirigido o no.

(4) Dado un conjunto de números P , una relación de orden R, comprobar si es un dcpo (es

decir, tiene bottom y todo conjunto dirigido tiene supremo).

Page 15: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

14

2. Funcionaes continuas

Profesora: Alicia Tocino Sánchez. Curso Académico 2018-2019.

Podemos hacer que toda función esté bien definida. Supongamos f : N → N una función

parcialmente definida. Es decir, no existe la imagen de todos los elementos de N (@f(n)∀n ∈ N).

Para hacer que f esté bien definida extendemos f a la función g definida como f(n) cuando f(n)

existe y ⊥ cuando f(n) no exista:

N⊥ −→ N⊥

n 7→ f(n)

n 7→ ⊥

Definición 2.1. Sean D y E posets. Una función f : D → E se dice monótona creciente si

para cada x, y ∈ D tales que x ≤ y, entonces f(x) ≤ f(y).

Las funciones monótonas crecientes preservan la estructura de poset (aunque no tienen porque

preservar el elemento mínimo ⊥). Además, la cantidad de información existente en el output debe

crecer si la cantidad de información en el input crece.

Proposición 2.2. Sean D y E posets y M ⊆ D un subconjunto dirigido. Si f : D → E es una

función monótona creciente, entonces f(M) es un subconjunto dirigido de E.

Proof. f(M) = {f(x) : x ∈ M} 6= ∅ porque M 6= ∅. Sean a, b dos elementos de f(M) tales que

a = f(x), b = f(y) para x, y ∈ M . Como M es dirigido, existe b ∈ M cota superior de {x, y}.

Como f es monótona creciente,

x ≤ b, y ≤ b⇒ f(x) ≤ f(b), f(y) ≤ f(b)

Luego f(b) ∈ f(M) es cota superior de {f(x), f(y)}. Por lo tanto, f(M) es un subconjunbto

dirigido de E. �

Ejemplo 2.3. Veamos algunos ejemplos de funciones de B⊥ en sí mismo.

(1) La función identidad es monótona creciente.

Page 16: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

15

(2) La función constante es monótona creciente.

(3) La función de la imagen no es monótona creciente porque ⊥ ≤ false pero f(⊥) � f(false).

Definición 2.4. Sean D y E dos dcpos. Una función f : D → E se dice que es continua si es

monótona creciente y para todo subconjunto direigido M ⊆ D se tiene que f(∨M) = ∨f(M).

Si D y E son dcpos punteados y f : D → E es una función se dice que f es estricta cuando

f(⊥D) = ⊥E.

Notación 2.5. Denotamos por:

Page 17: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

16

• D → E al conjunto de todas las funciones de D en E. Si f ∈ (D → E) entonces

f : D → E.

• D ◦ → E al conjunto de todas las funciones estrictas de D en E. Si f ∈ (D ◦ → E)

entonces f : D → E y f(⊥D) = ⊥E.

• D cont−→ E al conjunto de todas las funciones continuas de D en E.

• D ◦ cont−→ E al conjunto de todas las funciones continuas y estrictas de D en E.

Ejemplo 2.6.

(1) Las funciones constantes dcpos son continuas. Sean D y E dcpos y f : D → E tal que

f(x) = c donde c ∈ E es un elemento fijo.

• f es monótona creciente: para cada x, y ∈ D, x ≤ y entonces f(x) = c ≤ c = f(y)

• si M ⊆ D es dirigido entonces f(M) = {c} y por lo tanto f(∨M) = c = ∨f(M)

(2) La función identidad de un dcpo D (respectivamente dcpo punteado) en sí mismo es con-

tinua (respectivamente continua estricta).

• f es monótona creciente: para cada x, y ∈ D, x ≤ y entonces f(x) = x ≤ y = f(y)

• si M ⊆ D es dirigido entonces f(M) = M y por lo tanto f(∨M) = ∨M = ∨f(M)

• si D punteado, entonces f(⊥D) = ⊥D(3) La composición de funciones continuas (respectivamente continuas estrictas) entre dcpos

(respectivamente dcpos punteados) son continuas (respectivamente continuas estrictas).

f : D → E g : E → F D,E, F dcpos

g ◦ f : D → F g ◦ f(x) = g(f(x))

• g ◦ f monótona creciente: para cada x, y ∈ D, x ≤ y entonces f(x) ≤ f(y) al ser

f monótona creciente. Como f(x), f(y) ∈ E y g es monótona creciente entonces

g ◦ f(x) = g(f(x)) ≤ g(f(y)) = g ◦ f(y)

• si M ⊆ D es dirigido entonces g ◦ f(∨M) = g(f(∨M)) = g(∨f(M)) = ∨g(f(M)) =

∨g ◦ f(M)

• g ◦ f(⊥D) = g(⊥E) = ⊥F

Page 18: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

17

(4) Sea X un conjunto y S = P(X) el conjunto de partes de X junto son la relación de

inclusión donde ∅ = ⊥. En ejemplos anteriores vimos que si M ⊆ S dirigido entonces

∨M = ∪T donde T ∈M .

Dada una función f : X → X ′ podemos incluir una nueva función f ∗ : P(X)→ P(X ′)

tal que f ∗(Y ) := {f(y) | y ∈ Y }. Se puede probar que f ∗ es continua entre los dcpos P(X)

y P(X ′). Habría que comprobar que:

• f ∗(∪Yα) = ∪f ∗(Yα) para ver que f ∗(∨M) = ∨f ∗(M)

• f ∗(∅) = ∅

Lema 2.7. Sean D y E dcpos punteados en los que las restricciones de los órdenes a D − {⊥D}

y a E − {⊥E} son triviales (es decir, son cadenas). Sea f : D → E una función arbitraria. Se

tiene entonces que:

(1) Si f es monótona creciente entonces f es continua.

(2) Si f es estricta entonces f es monótona creciente.

Proof.

(1) Para ver que f es continua hay que ver que dado M ⊆ D dirigido se tiene que ∨f(M) =

f(∨M) puesto que ya tenemos que es monótona creciente. Sea M ⊆ D dirigido. Como el

orden en D−{⊥D} es el trivial entonces M puede constar de un único punto o bien es de

la forma {⊥D, d}, d ∈ D.

• Si M = {d} entonces f(∨M) = f(d) = ∨f(d) = ∨f(M)

• Si M = {⊥D, d} entonces f(∨M) = f(d) y como f es monótona creciente ∨f(M) =

∨{f(⊥D), f(d)} = f(d)

(2) Si f es estricta entonces para cada x, y ∈ D, x ≤ y entonces x ≤ y o x = ⊥D. Por lo tanto,

f(x) = f(y) o f(x) = f(⊥D) = ⊥E ≤ f(y).

Ejemplo 2.8.

(1) Cualquier función f de N⊥ en sí misma tal que f(⊥) = ⊥ es una función continua. Por

el lema anterior, f es estricta, por lo tanto es monótona creciente. Luego es continua.

Page 19: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

18

(2) Ejemplo de una función monótona creciente que no es continua. Sea

f : P(N)→ {⊥,>} ⊥ ≤ >

donde f(A) = ⊥ si A es finito y f(A) = > si A es infinito.

• Consideramos un conjunto dirigido de P(X),M = {{0}, {0, 1}, {0, 1, 2}, . . . , }. Veamos

que ∨f(M) 6= f(∨M).

– ∨M = N entonces f(∨M) = f(N) = >

– f(M) = {⊥} entonces ∨f(M) = ⊥

• Veamos que sí es monótona creciente. Sea A ⊆ B. Distinguimos varios casos:

– A y B finitos, entonces f(A) = ⊥ = f(B)

– A finito y B infinito, entonces f(A) = ⊥ ≤ > = f(B)

– A y B infinitos, entonces f(A = > = f(B))

Lema 2.9. Sea L un poset, {Ai}i∈I una familia de subconjuntos de L y A = ∪i∈IAi. Suponemos

que para cada i ∈ I existe el supremo de Ai, ∨Ai y suponemos que existe el supremo del conjuntos

{∨Ai : i ∈ I}. Entonces existe ∨A y además ∨A = ∨{∨ai : i ∈ I}.

Proof. Llamamos b = ∨{∨Ai : i ∈ I}. Si a ∈ A = ∪i∈IAi, en particular a ∈ Aj para algún j ∈ I.

Entonces a ≤ ∨Aj ≤ ∨{∨Ai : i ∈ I} = b. Luego a ≤ b para cada a ∈ A. Por lo tanto b es una

cota superior de A.

Sea c otra cota superior de A. Entonces ∨Ai ≤ c para cada i ∈ I. De aquí que, ∨{∨Ai : i ∈

I} ≤ c y por lo tanto b ≤ c.

Finalmente tenemos que b = ∨{∨Ai : i ∈ I} es el supremo de A, b = ∨A. �

Ejemplo 2.10. Puede existir el supremo de cada conjunto pero no el supremo de los supremos.

Sea N = ∪n∈N{n}. Cada {n} tiene supremo, pero no existe el supremo de los supremos.

∨{∨{n} : n ∈ N} = ∨{n : n ∈ N} = ∨N

Page 20: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

19

Corolario 2.11. Sea M poset y dirigido, D dcpo y f : M ×M → D monótona creciente respecto

al orden

(a1, a2) ≤ (b1, b2) si y sólo si a1 ≤ b1 y a2 ≤ b2

Definimos el conjunto Mx para cada x ∈M , Mx = {f(x, y) : y ∈M} ⊆ D. Entonces Mx, {∨Mx}

y {f(x, x) : x ∈M} son dirigidos y además

∨f(M ×M) = ∨{∨Mx : x ∈M} = ∨{f(x, x) : x ∈M}.

Proof.

• Veamos que Mx es dirigido. Sean a1, a2 ∈ Mx tales que a1 = f(x, y1), a2 = f(x, y2) para

y1, y2 ∈ M . Como M es dirigido, existe b ∈ M cota superior de {y1, y2}. Entonces

(x, y1) ≤ (x, b) y (x, y2) ≤ (x, b). Como f es monótona creciente, f(x, y1) ≤ f(x, b)

y f(x, y2) ≤ f(x, b). Por lo tanto, f(x, b) ∈ Mx es una cota superior de {a1, a2} =

{f(x, y1), f(x, y2)}.

• Veamos que {∨Mx : x ∈ M} es dirigido. Sean a1, a2 ∈ {∨Mx : x ∈ M}. Entonces,

a1 = ∨Mx1 y a2 = ∨Mx2 . Como M es dirigido, existe b ∈M tal que x1, x2 ≤ b.

Mx1 = {f(x1, y) : y ∈M} Mx2 = {f(x2, y) : y ∈M}

Para cada y ∈ M cada elemento f(x1, y) de Mx1 es menor o igual que f(b, y) ∈ Mb. De

forma análoga, para cada y ∈ M , cada elemento f(x2, y) de Mx2 es menor o igual que

f(b, y). De ambas desigualdades tenemos que Mb es una cota superior de Mx. Entonces

∨Mx1 ,∨Mx2 ≤ ∨Mb. Luego ∨Mb ∈ {∨Mx : x ∈M} es una cota superior de {a, b}.

• Veamos que {f(x, x) : x ∈ M} es dirigido. Sean a, b ∈ {f(x, x) : x ∈ M} tales que

a = f(x1, x1), b = f(x2, x2) para x1, x2 ∈M . ComoM dirigido, existe z ∈M cota superior

de {x1, x2}. Entonces x1 ≤ x, x2 ≤ z implica que (x1, x1) ≤ (z, z), (x2, x2) ≤ (z, z).

Como f es monótona creciente, f(x1, x1) ≤ f(z, z), f(x2, x2) ≤ f(z, z). De aquí que,

f(z, z) ∈ {f(x, x) : x ∈M} es cota superior de {a, b}.

• Veamos que ∨f(M ×M) = ∨{∨Mx : x ∈ M}. Sabemos que f(M ×M) = ∪x∈MMx.

Como Mx dirigido y Mx ⊆ D, D dcpo, entonces existe ∨Mx. Igualmente, como {∨Mx :

Page 21: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

20

x ∈M} ⊆ D existe ∨{∨Mx : x ∈M}. Podemos aplicar el lema anterior para afirmar que

existe ∨f(M ×M) y ∨f(M ×M) = ∨{∨Mx : x ∈M}.

• Veamos que ∨f(M ×M) = ∨{f(x, x) : x ∈M}.

– Es claro que f(x, x) ≤ ∨f(M ×M) por ser f(x, x) un elemento del conjunto para

cada x ∈M . Entonces ∨{f(x, x) : x ∈M} ≤ ∨f(M ×M).

– Sea f(x, y) un elementos dcualquiera de f(M×M). Para cada x, y ∈M existe z ∈M

cota superior de {x, y}. Entonces (x, y) ≤ (z, z). Como f es monótona creciente

f(x, y) ≤ f(z, z) ≤ ∨{f(x, x) : x ∈M}. De aquí que ∨f(M ×M) ≤ ∨{f(x, x) : x ∈

M}.

Ejemplo 2.12. Consideramos M = {0, 1, . . . , 11}, D = {0, 1, . . . , 121} y la función

f : {0, 1, . . . , 11} × {0, 1, . . . , 11} → {0, 1, . . . , 121}

definida por f(n,m) = n ·m. Entonces,

• ∨f(M ×M) = ∨{0, 1, . . . , 121} = 121

• ∨{f(x, x) : x ∈M} = ∨{0, 1, 4, 9, . . . , 121} = 121

Definición 2.13. Sean f, g ∈ (Dcont−→ E), D y E posets. Decimos que f ≤ g si y sólo si

f(x) ≤ g(x) para cada x ∈ D. Esto quiere decir que f y g tiene un orden puntual.

Proposición 2.14. Sean D y E dcpos y D cont−→ E el conjunto de todas las funciones continuas

de D a E ordenadas puntualmente. Entonces D cont−→ E es un dcpo. Además, si E es un dcpo

punteado, D ◦ cont−→ E es un dcpo punteado.

Proof.

• Veamos que D cont−→ E es un dcpo. Hay que probar quye cada subconjunto dirigido F ⊆

(Dcont−→ E) tiene un supremo en (D cont−→ E).

Page 22: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

21

Sea F un subconjunto dirigido de (Dcont−→ E). Buscamos su supremo en D

cont−→ E.

Consideramos el subconjunto Mx para cada x ∈ D,

Mx = {f(x) : f ∈ F} ⊆ E

– Veamos que Mx es dirigido. Sean a1, a2 ∈Mx, a1 = f1(x), a2 = f2(x) para f1, f2 ∈ F .

Como F es dirigido existe h ∈ F tal que f1 ≤ h, f2 ≤ h. Entonces

a1 = f1(x) ≤ h(x) a2 = f2(x) ≤ h(x)

Por lo tanto h(x) ∈Mx es cota superior de {a1, a2}. Luego Mx es dirigido.

– Como Mx ⊆ E es dirigido y E es un dcpo, entonces Mx tiene supremo para cada

x ∈ D.

– Consideremos la aplicación g ∈ (D −→ E) definida por g(x) = ∨Mx = ∨{f(x) : f ∈

F}. Veamos que g es continua y g = ∨F y habremos terminado.

∗ Veamos que g es monótona creciente. Sean x, y ∈ D, x ≤ y. Como f ∈ F es

continua, f(x) ≤ f(y) para cada f ∈ F . Luego g(x) = ∨{f(x) : f ∈ F} ≤

∨{f(y) : f ∈ F} = g(y). Por lo tanto, g es monótna creciente.

∗ Dado M ⊆ D dirigido., veamos que ∨g(M) = g(∨M).

g(∨M) = ∨{f(∨M) : f ∈ F} = ∨{∨f(M) : f ∈ F}

∨g(M) = ∨{g(x) : x ∈M} = ∨{∨{f(x) : f ∈ F} : x ∈M} =

= ∨{f(x) : f ∈ F, x ∈M}

Por el lema anterior sabemos que la igualdad de los conjuntos anteriores se da.

∗ Veamos que g es el supremo de F . Por definición g es cota superior de F . Si h es

otra cota superior, entonces f(x) ≤ h(x) para cada f ∈ F y para cada x ∈ M .

Entonces ∨{f(x) : f ∈ F} ≤ h(x) para cada x ∈ M . Por lo tarto g(x) ≤ h(x)

para cada x ∈M.

• Si definimos la función ⊥ : D → E como la función constante ⊥(x) = ⊥, entonces ⊥ ≤ f

para cada f ∈ (D ◦ cont−→ E). Por tanto, D ◦ cont−→ E es punteado.

Page 23: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

22

Lema 2.15. Sean D un dcpo, E un dcpo punteado y f, g : D → E funciones continuas. Sea

b : D → B⊥ una función que toma valores en el dcpo punteado de los valores de veracidad. Sea

h : D → E la función definida por,

• h(x) = ⊥ si b(x) = ⊥

• h(x) = f(x) si b(x) = verdadero

• h(x) = g(x) si b(x) = falso

Entonces h es continua.

Proof. Hay que ver que h es monótona creciente y que h(∨M) = ∨h(M) para M dirigido. �

Proposición 2.16. Sea D un dcpo punteado, b una función continua de D hasta B⊥ y las fun-

ciones siguientes,

φ, c ∈ (D ◦ cont−→)D F (φ) : D → D

donde F (φ) es la función que actúa del siguiente modo para cada x ∈ D:

• F (φ)(x) = ⊥ si b(x) = ⊥

• F (φ)(x) = x si b(x) = falso

• F (φ)(x) = (φ ◦ c)(x) si b(x) = verdadero

Se tiene entonces:

(1) La función F (φ) es continua estricta.

(2) La aplicación F : (D◦ cont−→ D) → (D◦ cont−→ D) tal que a cada φ ∈ (D◦ cont−→ D) le asocio

F (φ) ∈ (D◦ cont−→ D), es continua.

Proof.

(1) Para ver que F (φ) es continua estricta usamos el lema anterior.

(2) Para ver que F es continua probamos que es monótona creciente y que F (∨M) = ∨F (M)

para M ⊆ (D ◦ cont−→ D) dirigido.

Page 24: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

23

Lema 2.17. Sean E,E, F dcpos y f : D × E → F una función . Entonces, f es continua si y

sólo si f es continua en cada variable.

Proof. Para la demostración hay que considerar las funciones fd : E → F definida por fd(y) =

f(d, y) para d ∈ D fijo y fe : D → F definida por fe(x) = f(x, e) para e ∈ E fijo. �

Corolario 2.18. Sean D,E, F dcpos. La función

◦ : (Econt−→ F )× (D

cont−→ E)→ (Dcont−→ F )

que a cada par de funciones le asocia su composición, es una función continua.

Proof. Usamos el lema anterior y consideramos las aplicaciones,

◦f : (Dcont−→ E)→ (D

cont−→ F ) ◦f (g) = f ◦ g

◦g : (Econt−→ F )→ (D

cont−→ F ) ◦g (f) = f ◦ g

Page 25: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

24

Ejercicios para nota

(1) Sean D y E dcpos y f : D → E una función sobreyectiva tal que para cualesquiera

x, x′ ∈ D las desigualdades f(x) ≤ f(x′) y x ≤ x′ son equivalentes. Demostrar que f es

continua.

(2) Determinar las aplicaciones continuas que tienen dominio y codominio N⊥, f : N⊥ → N⊥.

(3) Sea el dcpo punteado D = [0, 500]. Para todo x ∈ D denotamos por bxc qal mayor entero

del conjunto {n ∈ N : n ≤ x} (es decir, la función suelo). La función f : D → D definida

por f(x) = bxc, ¿es continua?

(4) Sean D y E dcpos, f : D → E una función continua y biyectiva. Demostrar que si f−1 es

monótona creciente entonces f−1 es también continua.

(5) Una función f : D → E entre dcpos punteados se dice que es un isomorfismo cuando es

biyectiva, continua, estricta y su inversa f−1 es también continua. Los dcpos punteados se

dicen isomorfos cuando existe algún isomorfismo f : D → E.

Dar ejemplos de funciones biyectivas, continuas y estrictas entre dcpos punteados que no

son isomorfos.

(6) Sean f, g, h : P(N)×P(N)→ P(X) las aplicaciones dadas por f(S, T ) = S ∪ T , g(S, T ) =

S ∩ T y h(S, T ) = S − T . ¿Cuáles son funciones continuas?

Page 26: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

25

Ejercicios para programar

(1) Sea N la cadena de N puntos. Hay una función monótona creciente de 1 → 1. Hay tres

funciones monótonas crecientes de 2→ 2.

Escribir las funciones monótonas crecientes de 3 → 3. Escribir un programa (recursivo o

no) para calcular el número de funciones crecientes de N →M.

(2) Calcular las funciones monótonas creientes entre los siguientes diagramas de Hasse.

(a):

(b):

(c):

Page 27: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

26

(3) Usar el programa realizado en el punto 4 del tema anterior para calcular todas las funciones

continuas de un poset P en sí mismo. Comprobar que las funciones del ejercicio anterior

son continuas.

Page 28: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

27

3. Algunas construcciones de dcpos

Profesora: Alicia Tocino Sánchez. Curso Académico 2018-2019.

3.1. Productos directos. Dados los posets D y E definimos el producto directo de D y E

como sigue:

D × E = {(x, y) : x ∈ D, y ∈ E}

El orden parcial usado en D × E es:

(x, y) ≤ (x′, y′)⇐⇒ x ≤ x′ , y ≤ y′.

Función fst y snd . Definimos las funciones,

D × E fst−→ D

(x, y) 7−→ fst(x, y) = x

D × E snd−→ E

(x, y) 7−→ snd(x, y) = y

Recordamos que si f : S → T es una función entre dos conjuntos, denotamos por f ∗ : P(S)→

P(T ) a la función entre el conjunto de partes de S y T .

Sea L ⊆ D × E un subconjunto dirigido, entonces los siguientes conjuntos son dirigidos:

M = fst∗(L) = {x ∈ D : ∃y ∈ E : (x, y) ∈ L}

N = snd∗(L) = {y ∈ E : ∃x ∈ D : (x, y) ∈ L}

En particular, si D y E son dcpos punteados, entonces ∨L = (∨M,∨N) y ⊥D×E = (⊥D,⊥E).

Por lo tanto, D × E es un dcpo punteado.

Dados D,E, F dcpos sabemos que una función f : D × E → F es continua si y sólo si es

continua en cada componente. Es decir, f es continua si y sólo si:

• la funciónfe : D −→ F

x 7−→ f(x, e)es continua y

• la funciónfd : E −→ F

y 7−→ f(d, y)es continua

De esta forma sabemos que las funciones fst y snd son continuas. Además, dado F dcp y

las funciones continuas f : F → D y g : F → E existe una funcón continua < f, g > tal que

Page 29: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

28

fst ◦ < f, g >= f y snd ◦ < f, g >= g

< f, g >: F −→ D × E

x 7−→ (f(x), g(x))

y para cada función continua h : f −→ D × E se tiene que,

< fst ◦ h, snd ◦ h >= h.

Proposición 3.1. Dados D,E, F dcpos y f : F → D, g : F → E funciones continuas, existe una

única función continua < f, g > que completa el diagrama anterior.

D

D × E

snd��

fst

OO

F

g{{

<f,g>oo

fcc

E

Esta propiedad se llama propiedad universal del producto.

Entonces D × E es un producto directo si y sólo si cumple la propiedad universal. Sean

f : D → D′ y g : E → E ′ funciones continuas. Podemos definir la función,

f × g : D × E −→ D′ × E ′

(x, y) 7−→ (f(x), g(y))

como f×g =< f ◦ fst, g ◦snd >. Podemos resumir la definición de f×g en el siguiente diagrama.

Df

// D′

D × E

snd��

fst

OO

D′ × E ′fst

OO

f×goo

snd��

Eg

// E ′

Se verifican las siguientes propiedades:

Page 30: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

29

• idD × idE = idD×E

• (f ′ × g′) ◦ (f × g) = (f ′ ◦ f)× (g′ ◦ g)

Función apply y curry. Dará una relación entre → y ×. Sean D,E, F dcpos. Existe una

función,apply : ((E

cont−→ F )× E) −→ F

(f, x) 7−→ f(x)

donde f : E → F es una función continua y x ∈ E.

Proposición 3.2. La función apply es continua.

Dado f : D × E → F existe una función,

curry(f) : D −→ (Econt−→ F )

x 7−→ curry(f)(x)

curry(f)(x) : E −→ F

y 7−→ curry(f)(x)(y) = f(x, y)

Observamos que curry(f)(x) = fx.

Proposición 3.3. La función curry es continua. Además, es la única función continua que hace

el siguiente diagrama conmutativo.

D × E

curry(f)×id��

f// F

((Econt−→ F )× E)

apply

88

Obervemos que la condición de unicidad equivale a la siguiente igualdad entre funciones:

curry(apply ◦ (h× idE)) = h

Page 31: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

30

Esta igualdad se sigue del diagrama,

D × E

h×id��

f// F

((Econt−→ F )× E)

apply

88

donde f = apply ◦ (h× idE).

Resumimos todo lo anterior en la siguiente proposición.

Proposición 3.4. Sean D,E, F dcpos.

(1) La función apply : ((Econt−→ F )×E)→ F definido por apply(f, x) = f(x) es una función

continua.

(2) Sean f : D × E → F continua, x ∈ D y fx(y) = f(x, y) para cada y ∈ E. Entonces fx es

una función continua y la función curry(f) : D → (Econt−→) dada por curry(f)(x) = fx

es continua.

Además, curry(f) está caracterizado por ser la única función continua f ′ : D → (Econt−→)

que hace conmutativo el diagrama siguiente.

D × E

f ′×id��

f// F

((Econt−→ F )× E)

apply

88

Ocurre una situación similar que veremos en las próximas secciones para dcpos punteados y

funciones continuas estrictas.

3.2. Productos smash (o quebrado). En el producto directo de dcpos punteados D × E hay

elementos de la forma (x,⊥) y (⊥, y). Si x 6= ⊥ o y 6= ⊥ entonces (x,⊥) y (⊥, y) son elementos

distintos de D×E. En la programaci´ón semántica hay ocasiones en las que queremos identificar

los pares (x,⊥) y (⊥, y). Por este motivo existe otra versión de producto llamado producto

smash.

Page 32: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

31

Definición 3.5. Para D,E dcpos punteados se define el producto smash como el conjunto,

D ⊗ E = {(x, y) ∈ D × E : x 6= ⊥, y 6= ⊥} ∪ {⊥D⊗E}

donde ⊥D⊗E es un nuevo elemento (no es un par).

El orden que se sigue es el mismo que en el producto directo añadiendo que ⊥D⊗E ≤ z para

cada z ∈ D ⊗ E.

Función smash y unsmash. Existe una función continua y sobreyectiva definida por smash :

D × E → D ⊗ E donde:

smash(x, y) =

(x, y) si x 6= ⊥ y y 6= ⊥

⊥D⊗E en otro caso

La función smash establece una relación entre el producto directo, D×E, y el producto smash,

D ⊗ E.

También existe una función continua e inyectiva definida por unsmash : D ⊗ E → D × E

donde:

unsmash(z) =

z si z = (x, y) es un par

(⊥,⊥) si z = ⊥D⊗EPara relacionar smash y unsmash en un mismo diagrama necesitaremos saber qué es una función

biestricta.

Definición 3.6. Decimos que la función f : D × E → F donde D,E, F son dcpos punteados, es

biestricta si f(x, y) = ⊥ siempre que x = ⊥ o y = ⊥.

Proposición 3.7. Si f : D × E → F es biestricta y continua entonces g = f ◦ unsmash es la

única función estricta y continua que completa el diagrama.

D × E

smash��

f

##D ⊗ E

f◦unsmash// F

Page 33: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

32

Si f : D → D′ y g : E → E ′ son estrictas y continuas entonces f⊗g = smash◦(f×g)◦unsmash

es la única función estricta y continua que completa el siguiente diagrama:

D × E

smash��

f×g// D′ × E ′

smash��

D ⊗ Ef⊗g// D′ ⊗ E ′

Observamos que existe una relación entre ⊗ y las funciones estrictas continuas.

Al igual que tenemos la relación entre funciones continuas, producto directo, apply y curry

ahora podemos dar una relación entre funciones continuas estrictas, producto smash, strict_apply

y strict_curry :

D ⊗ E

strict_curry(f)⊗id��

f// F

((E◦ cont−→ F )⊗ E)

strict_apply

88

3.3. Suma y suma fundida.

Definición 3.8. Sean D,E dcpos. Definimos la suma como el conjunto,

D + E = ((D × {0}) ∪ (E × {1})

El conjunto D + E es un dcpo respecto al orden parcial dado por,

(x, i) ≤ (y, j) ⇐⇒ i = j, x ≤ y.

Es decir, sólo se pueden comparar elementos pertenecientes a un mismo conjunto. No podemos

comparar un elemento de D, de la forma (x, 0), con otro de E, de la forma (y, 1), ya que 0 6= 1.

Además, las funciones siguientes son continuas:

Dd−→ D + E

x 7−→ (x, 0)

Ee−→ D + E

y 7−→ (y, 1)

Page 34: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

33

Si F es un dcpo y fd : D → F , fe : E → F son continuas, existe una única función f : D+E → F

continua que hace conmutativo el diagrama:

D

d��

fd

##D + E

f

// F

Efe

;;

e

OO

Si f : D → E ′ y g : E → E ′ son funciones continuas, podemos definir la función f+g : D+E →

D′ + E ′ que hace conmutativo el siguiente diagrama,

D

d��

f// D′

d′

��

D + Ef+g

// D′ + E ′

E

e

OO

g// E ′

e′

OO

Definición 3.9. Sean D,E dcpos punteados. Definimos la suma fundida D ⊕ E como el con-

junto,

D ⊕ E = ((D − {⊥D})× {0}) ∪ ((E − {⊥E})× {1}) ∪ {⊥D⊕E}

donde D − {⊥D} y E − {⊥E} son los conjuntos D y E sin su elementos mínimo y ⊥D⊕E es un

nuevo elemento que no es un par.

La suma fundida, D ⊕ E, es un dcpo punteado con la relación de orden parcial heredada de

D + E,

(x, i) ≤ (y, j) ⇐⇒ i = j, x ≤ y

⊥D⊕E ≤ z ∀z ∈ D ⊕ E

Funciones inl y inr . Existen funciones estrictas continuas inl : D◦ −→ D ⊕ E y inr : E◦ −→

D ⊕ E definidas por:

Page 35: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

34

inl(x) =

(x, 0) si x 6= ⊥

⊥D⊕E si x = ⊥inr(y) =

(y, 1) si y 6= ⊥

⊥D⊕E si y = ⊥

Además, si F es un dcpo punteado y f : D◦ → F , g : E◦ → F son funciones continuas estrictas,

entonces existe una única función continua estricta [f, g] que completa el diagrama:

D

inl��

f

##D ⊕ E

[f,g]

// F

E

g

;;

inr

OO

La función [f, g] está dada por:

[f,g](z) =

f(x) si z = (x, 0)

g(y) si z = (y, 1)

⊥ si z = ⊥D⊕E

Dadas f : D◦ → D′ y g : E◦ → E ′ definimos

f ⊕ g = [inl ◦ f, inr ◦ g] : D ⊕ ◦ → D′ ⊕ E ′

haciendo conmutativo el diagrama siguiente.

D

inl��

f// D′

inl��

D ⊕ Ef⊕g// D′ + E ′

E

inr

OO

g// E ′

inr

OO

3.4. Elevaciones.

Page 36: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

35

Definición 3.10. Dado D un dcpo punteado, definimos el elevado de D como el conjunto Dbot =

(D × {0}) ∪ {⊥} donde ⊥ es un nuevo elemento que no es un par.

El conjunto D⊥ junto con el orden parcial dado por (x, 0) ≤ (y, 0) si y sólo si x ≤ y y ⊥ ≤ z

para cada x ∈ D⊥ es un dcpo punteado.

Funciones down y up. Definimos la función continua estricta down : D⊥◦ → D dada por,

down(z) =

x si z = (x, 0)

⊥D en caso contrario

Definimos la función continua (no estricta) up : D → D⊥ dada por up(x) = (x, 0).

Estas funciones cumplen las relaciones:

• down ◦ up = idD

Dup→ D⊥

down→ D

x 7→ (x, 0) 7→ x

• up ◦ down 6= idD⊥

D⊥down→ D

up→ D⊥

z 7→ x 7→ (x, 0)

z 7→ ⊥ 7→ (⊥, 0)

Page 37: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

36

Sea f : D → E función continua entre dcpos punteados, existe una única función continua

estricta f+ que completa el diagrama:

D

up��

f

D⊥

f+// F

Además, dada la función continua f : D → E definimos la función continua estricta f⊥ =

(up ◦ f)+ : D⊥◦ → E⊥.

D

up��

f// E

up��

D⊥f⊥

// E⊥

3.5. Suma separada.

Definición 3.11. Sean D,E dcpos punteados. Definimos la suma separada como el dcpo pun-

teado D⊥ ⊕ E⊥.

Por las propiedades universales sabemos que h = [f+, g+] es la única función continua estricta

que completa el diagrama:

D

inl◦up��

f

$$D⊥ ⊕ E⊥

h // F

E

inr◦up

OO

g

::

Puede que h no sea la única función continua que complete el diagrama. Además, dadas

f : D → D′ y g : E → E ′ continuas, podemos definir f⊥ ⊕ g⊥ : D⊥ ⊕ E⊥ → D′⊥ ⊕ E ′⊥ como la

Page 38: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

37

función que hace conmutativo el siguiente diagrama:

D⊥

inl��

f⊥ // D′⊥

inl��

D⊥ ⊕ E⊥f⊥⊕g⊥

// D′⊥ ⊕ E ′⊥

E⊥

inr

OO

g⊥// E ′⊥

inr

OO

Observación 3.12. Podemos generalizar todas las construcciones anteriores a mas de dos dcpos:

D1 ×D2 ×D3 × . . . D1 ⊗D2 ⊗D3 ⊗ . . .

D1 +D2 +D3 + . . . D1 ⊕D2 ⊕D3 ⊕ . . . D1⊥ ⊕D2⊥ ⊕D3⊥ ⊕ . . .

Page 39: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

38

Ejercicios para nota

(1) Sea D = {(S, T ) ∈ P(N) × P(N) : S ∩ T = ∅}. Consideramos sobre D el orden parcial

inducido por el orden del dcpo producto P(N) × P(N). Comprobar que D es un dcpo

punteado isomorfo ("similar") a (N⊥◦cont→ B⊥) donde B⊥ es el dcpo de los valores de la

verdad B⊥ = {true, false,⊥}.

(2) Dar el diagrama de Hasse del orden parcial de los dcpos II × II y B⊥ ⊗ B⊥ donde II =

{⊥,>} con ⊥ ≤ > y B⊥ es el dcpo de los valores de la verdad.

(3) Sea II = {⊥,>} y D = II × II × II × . . . el correspondiente dcpo producto.

• Sea M el subconjunto de D cuyos elementos son:

(⊥,⊥,⊥,⊥, . . .)

(>,⊥,⊥,⊥, . . .)

(>,>,⊥,⊥, . . .)

(>,>,>,⊥, . . .)

(>,>,>,>, . . .)...

Calcular ∨M .

• Definimos la función f : D → II como sigue:

f(z) =

> si z tiene infinitas componentes iguales a >

⊥ en caso contrario

¿Es f monótona? ¿Es f continua? ¿Es f continua en cada componente?

(4) Definir los conceptos de producto directo, producto smash, suma y suma fundida para un

número finito de dcpos.

Page 40: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

39

4. Teorema del Punto Fijo y Aplicaciones

Profesora: Alicia Tocino Sánchez. Curso Académico 2018-2019.

Definición 4.1. Sea D un dcpo punteado y f : D → D una función. Se dice que p ∈ D es un

punto fijo de f si f(p) = p.

Teorema 4.2. Sea D un dcpoo punteado.

(1) (Teorema de Kleene-Scott) Sea f : D → D una función continua. Entonces el conjunto

M = {fn(⊥) : n = 0, 1, . . .} es dirigido y ∨M es el menor punto fijo de f . Es decir,

f(∨M) = ∨M y si existe c′ ∈ D tal que f(c′) = c′, entonces ∨M ≤ c′.

(2) La aplicación fix : (Dcont−→ D) −→ D, que a toda función continua de D en D le asocia su

menor punto fijo, es continua.

Proof. Dado el conjunto M = {⊥, f(⊥), f 2(⊥), . . .} se verifica trivialmente que:

• ⊥ ≤ f(⊥) ≤ f 2(⊥) ≤ . . . ≤ fn(⊥) ≤ fn+1(⊥) ≤ . . .

• M es un conjunto dirigido (totalmente ordenado) y por estar dentro de un dcpo punteado

existe el supremo de M .

Llamamos c al supremo de M (c = ∨M). Veamos que c es un punto fijo de f .

• f(c) = f(∨M) = ∨f(M) (la última igualdad se da porque f es continua)

• Como f(M) = {f(⊥), f 2(⊥), f 3(⊥), . . .} (sólo falta el elemento mínimo, ⊥, para ser M)

se tiene que ∨M = ∨f(M).

Por lo tanto ∨M es punto fijo de f , f(∨M) = ∨M .

Falta ver que es el menor punto fijo. Supongamos que existe c′ ∈ D tal que f(c′) = c′. Sabemos

que ⊥ ≤ c′. Aplicamos f a la desigualdad anterior repetidas veces.

⊥ ≤ c′, f(⊥) ≤ f(c′) = c′, f 2(⊥) ≤ f 2(c′) = c′, . . . , fn(⊥) ≤ c′ para cada n ∈ N

De aquí que c′ sea una cota superior de M . Por definición el supremo de M es el mínimo de las

cotas superiores, entonces c = ∨M ≤ c′.

El segundo apartado se propone como ejercicio. �

Page 41: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

40

Aplicación del Teorema del Punto Fijo a funciones recursivas.

Como ejemplo ilustrativo usaremos la función factorial, fact : N → N. La recursividad es una

forma más elegante de presentar un programa que usando funciónes iterativas, como el bucle for.

fact(n) =

1 si n = 0

n · fact(n− 1) si n > 0

¿Cómo sabemos que existe una función fact que satisface la ecuación anterior? Aplicando el

Teorema del Punto Fijo sabremos que existe y que es única. Para poder aplicar el teorema a una

función recursiva debemos realizar los siguientes pasos.

Paso 1. Dada una función f : N→ N podemos extenderla a una nueva función estricta.

f ∗ : N⊥ −→ N⊥⊥ 7−→ ⊥

n 7−→ f(n)

Paso 2. Sabemos que el conjunto de funciones continuas y estrictas entre dcpos punteados es un

dcpo punteado por una Proposición del Tema 2.

Extendemos la función factorial a una función estricta,

fact : N⊥ −→ N⊥⊥ 7−→ ⊥

0 7−→ 1

n 7−→ n · fact(n− 1), n > 0

Sabemos que N⊥ es un dcpo punteado y que el conjunto de funciones continuas N⊥◦cont→ N⊥

es también un dcpo punteado. Para aplicar el Teorema del Punto Fijo construimos la función no

recursiva F entre dcpos punteados como sigue.

Page 42: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

41

F : (N⊥◦cont→ N⊥) −→ (N⊥◦

cont→ N⊥)

f 7−→ F (f)

F (f) : N⊥ −→ N⊥⊥ 7−→ ⊥

0 7−→ 1

n 7−→ n · f(n− 1), n > 0

Debemos probar que F es continua para poder aplicar el Teorema del Punto Fijo (se propone

como ejercicio). Aplicando el Teorema del Punto Fijo sabemos que existe un único punto fijo

mínimo, f , tal que F (f) = f . Entonces existe f tal que f(0) = 1 y f(n) = n ·f(n−1). Así hemos

comprobado que la función factorial existe y es única.

En concreto, para F , definimos su punto fijo como Fix(F ) donde:

F : ((N⊥◦cont→ N⊥) −→ (N⊥◦

cont→ N⊥)) −→ (N⊥◦cont→ N⊥)

F 7−→ Fix(F ) = ∨{⊥, F (⊥), F 2(⊥), . . .}

Aplicación del Teorema del Punto Fijo para demostrar el Teorema de Scroder-Bernstein.

Mostramos otra de las aplicaciones del Teorema del Punto Fijo en la demostración del siguiente

resultado.

Teorema 4.3 (de Scroder-Bernstein). Sean S y T conjuntos. Si f : S → T y g : T → S son

inyectivas, entonces existe una biyección h : S → T .

Proof. La siguiente función es continua respecto al orden de inclusión dentro del conjunto de

partes.P(T ) −→ P(T )

Y 7−→ (T − f(S)) ∪ f(g(Y ))

Como el conjunto de partes P(T ) es un dcpo punteado y la función anterior es continua, podemos

aplicar el Teorema del Punto Fijo para afirmar que existe un subconjunto Y tal que Y = (T −

f(S)) ∪ f(g(Y )). En concreto, T − Y = f(S − g(Y )) ya que:

T − Y = T − ((T − f(S)) ∪ f(g(Y ))) = (T − (T − f(S))) ∩ (T − (f(g(Y )))) =

= f(S) ∩ (T − (f(g(Y )))) = f(S − g(Y ))

Page 43: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

42

Definimos h : S → T por,

h(x) =

y si x = g(y) para algún y ∈ Y

f(x) en otro caso

Esto tiene sentido porque g es inyectiva. Además, h es inyectiva ya que está definida mediante

f y g (ambas inyectivas). Para ver que es sobreyectiva supongamos y ∈ T . Si y ∈ Y , entonces

h(g(y)) = y. Si y /∈ Y , entonces y ∈ f(S − g(Y )) y así y = f(x) = h(x) para algún x. Por lo

tanto h es una biyección. �

Ejemplo.

Sea D un dcpo punteado, B⊥ el dcpo punteado de los valores de verdad, b : D → B⊥ una función

continua y c : D → D una función continua estricta. Por una proposición del Tema 2 sabemos

que la aplicación F (φ) : D → D dada por,

F (φ)(x) =

⊥ si b(x) = ⊥

x si b(x) = false

(φ ◦ c)(x) si b(x) = true

es continua y estricta. Además, la aplicación F : (D ◦ cont−→ D) −→ (D ◦ cont−→ D) que transforma

cada φ ∈ (D ◦ cont−→ D) en F (φ) ∈ (D ◦ cont−→ D) es continua.

El Teorema del Punto Fijo permite afirmar la existencia de un menor punto fijo de F que es el

supremo del conjunto dirigido

M = {⊥, F (⊥), F 2(⊥), . . .}

Calculamos explícitamente el menor punto fijo de F . Mostramos, para empezar, que para cada

n ∈ N, φ ∈ (D ◦ cont−→ D) y x ∈ D, el valor de F n(φ)x está dado de la siguiente forma:

(i): F n(φ)(x) = ⊥ si existe un entero i0 con 0 ≤ i0 < n, b◦ci0(x) = ⊥ y tal que b◦ci(x) = true

para cada i tal que 0 ≤ i < i0.

(ii): F n(φ)(x) = ci0(x) si existe un entero i0 con 0 ≤ i0 < n, b ◦ ci0(x) = false y tal que

b ◦ ci(x) = true para cada i tal que 0 ≤ i < i0.

(iii): F n(φ)(x) = φ ◦ cn(x) si se tiene que b ◦ ci(x) = true para cada i tal que 0 ≤ i < n.

Page 44: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

43

Lo demostramos por inducción sobre n.

• F 0(φ)(x) = φ(x) para cada x ∈ D y para cada φ ∈ (D ◦ cont−→ D).

• F 1(φ)(x) = F (φ)(x) =

⊥ si b(x) = ⊥

x si b(x) = false

(φ ◦ c)(x) si b(x) = true• Hipótesis de inducción: suponemos el resultado cierto para n ∈ N.

• Veamos que el resultado se verifica para n+ 1. Tenemos que,

F n+1(φ)(x) = F (F n(φ))(x) =

⊥ si b(x) = ⊥

x si b(x) = false

(F n(φ) ◦ c)(x) si b(x) = trueSi b(x) = true se tiene que F n+1(φ)(x) = F n(φ) ◦ c(x) por la hipótesis de inducción

obtenemos:

– F n+1(φ)(x) = ⊥, si existe un entero i0 con 0 ≤ i0 < n+ 1, b ◦ ci0(x) = ⊥ y para el que

se tiene b ◦ ci+1(x) = true para todo entero i tal que 0 ≤ i < i0.

– F n+1(φ)(x) = ci0(x), si existe un entero i0 con 0 ≤ i0 < n+ 1, b ◦ ci0(x) = false y para

el que se tiene b ◦ ci+1(x) = true para todo entero i tal que 0 ≤ i < i0.

– F n+1(φ)(x) = φ ◦ cn+1(x), si se tiene que b ◦ ci(x) = true para todo entero i tal que

0 ≤ i < n+ 1.

Esto demuestra las igualdades dadas en (i), (ii), (iii).

En el caso particular de φ = ⊥(D ◦cont−→D)

tenemos que,

F n(⊥(D ◦cont−→D)

)(x) =

ci0(x) si existe i0 con 0 ≤ i0, b ◦ ci0(x) = false

y b ◦ ci0(x) = true para 0 ≤ i < i0

⊥ en otro caso

ya que ⊥ ◦ cn(x) = ⊥.

Finalmente,

Fix(F (x)) = ∨{F n(⊥)(x) : n = 0, 1, 2, . . .}

Page 45: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

44

Y por tanto,

Fix(F (x)) =

ci0(x) si existe i0 con 0 ≤ i0, b ◦ ci0(x) = false

y b ◦ ci0(x) = true para 0 ≤ i < i0

⊥ en otro caso

Page 46: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

45

Ejercicios para nota

(1) Dado D un dcpo punteado, demostrar que la aplicación Fix : (D → D) −→ D que asocia

a cada función de D en D su menor punto fijo, es continua.

(2) Siguiendo el argumento de aplicar el Teorema del Punto Fijo para aplicarlo a la función

factorial recursiva, demostrar que la función F es continua.

F : (N⊥◦cont→ N⊥) −→ (N⊥◦

cont→ N⊥)

f 7−→ F (f)

F (f) : N⊥ −→ N⊥⊥ 7−→ ⊥

0 7−→ 1

n 7−→ n · f(n− 1), n > 0

(3) Sea D un dcpo y f : D → D una aplicación continua. Comprobar que los puntos fijos de

f constituyen un dcpo respecto del orden parcial inducido por el del dcpo. Mostrar que

dicho dcpo es punteado en el caso en que D lo sea.

(4) Sea G : (N⊥ ◦cont−→ N⊥) −→ (N⊥ ◦

cont−→ N⊥) la función definida como sigue:

G(φ)(x) =

0 si x = 0

φ(n− 2) + 1 si n 6= ⊥, 0, 1 y φ(n− 2) 6= ⊥

⊥ en otro caso

Comprobar que G es continua y demostrar que tiene exactamente dos puntos fijos.

Page 47: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

46

5. Semántica Denotacional

Dar la semántica de un lenguaje de programación es explicar la forma en la que puede usarse.

Para ello, es preciso describir lo que hacen los programas escritos en dicho lenguaje cuando son

ejecutados. Las definiciones precisas existentes sobre la semántica de los lenguajes se pueden

dividir en tres grupos.

• La semántica de un lenguaje de programación viene descrita por el funcionamiento de una

máquina virtual, más o menos abstracta. Es lo que se conoce como semántica operacional.

• Se define un espacio abstracto de significados primitivos (espacio de denotaciones), y se

hace corresponder a cada objeto sintáctico primitivo algún objeto de dicho espacio de

significados. Además, con el fin de interpretar las expresiones, a cada operador se le debe

asociar una función sobre el espacio de denotaciones. A esto se le conoce como semántica

denotacional.

• Se definen propiedades generales que deben cumplir las estructuras sintácticas y, por lo

tanto, el programa. Estas propiedades se suelen describir mediante fórmulas lógicas que

deben cumplirse antes (precondiciones) y después (postcondiciones) de ejecutarse la es-

tructura. A esto se le conoce como semántica axiomática.

Se detallará la semántica denotacional para un Lenguaje de Programación Simple (LPS) como

parte de los lenguajes imperativos en los que existe un único camino posible al ser ejecutados (no

contiene errores de escritura). Una de las ventajas de dicha semántica es que se puede predecir

el comportamiento de un programa sin necesidad de ejecutarlo. Se dirá que un lenguaje de

programación está bien definido cuando la semántica denotacional y la semántica operacional

coincidan.

Sintaxis de un LPS.

Primero describiremos la sintaxis de dicho lenguaje dando las expresiones aritméticas, las expre-

siones lógicas o booleanas y los comandos de los que consta.

(1) Expresiones Aritméticas

• Z⊥

Page 48: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

47

• Var = {conjunto infinito de letras}

• a1 + a2 y a1 − a2 donde a1 y a2 son expresiones aritméticas

• a1 · a2 donde a1 y a2 son exprsiones aritméticas

Si permitiéramos la división entre expresiones aritméticas deberíamos de considerar el

conjunto Q⊥ en vez del conjunto de los números enteros.

(2) Expresiones Booleanas

• Valores de verdad: true, false

• Negación: ¬b donde b es una expresión booleana

• Disyunción: b1 ∨ b2 donde b1 y b2 son expresiones booleanas

• Menor que: a1 < a2 son expresiones aritméticas

• Igual que: a1 == a2 donde a1 y a2 son expresiones aritméticas

No incluimos la conjunción ∧ ni la implicación porque se pueden obtener de las anteriores

(b1 ∧ b2 ≡ ¬(¬b1 ∨ ¬b2) y b1 ⇒ b2 ≡ ¬(b1 ∨ b2)).

(3) Comandos

• Skip (no hace nada, salta)

• Asignación de expresión aritmética a una variable: x := a donde x ∈ Var y a es una

expresión aritmética

• Condicional: if b then c1 else c2 donde b es una expresión booleana y c1, c2 son co-

mandos

• Composición: c1; c2 donde c1 y c2 son comandos (se ejecuta primero c1 y después c2)

• Iteración definida: for a do c donde a es una expresión aritmética y c es un comando

• Iteración indefinida: while b do c donde b es una expresión booleana y c es un comando

Semántica Denotacional de un LPS.

Para dar la semántica denotacional necesitamos conocer el concepto de estado. Sabiendo que

el computador permite almacenar datos en sus posiciones de memoria, un estado caracteriza

el contenido de todas las posiciones de memoria de un computador en un momento dado. La

semántica denotacional asocia a todo comando una aplicación del conjunto de los estados en sí

Page 49: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

48

mismo. Dicha aplicación pretende capturar los cambios en los contenidos de memoria que produce

el comando al ejecutarse.

Llamamos Σ = (Var → Z⊥) al conjunto de estados del sistema donde σ ∈ Σ es una función

parcialmente definida que asocia valores de Z⊥ a las variables de nuestro LPS (σx es el valor de

la variable x en el estado σ). A las variables no definidas les asociamos el valor ⊥.

σ : Var −→ Z⊥x 7−→ σx

(1) Semántica denotacional de Expresiones Aritméticas. Para cada expresión arit-

mética a definimos la semántica denotacional de a en el estado σ como [[a]]Aσ donde:

[[ ]]A : Expr. Aritm. −→ (Σ→ Z⊥)

a 7−→ [[a]]A

[[a]]A : Σ −→ Z⊥σ 7−→ [[a]]Aσ

Alternativamente, podemos definir [[a]]Aσ como:

[[ ]]A : (Expr. Aritm.× Σ) −→ Z⊥(a, σ) 7−→ [[a]]Aσ

Para simplificar la notación escribiremos [[a]]σ para denotar la semántica denotacional de

a en el estado σ.

• n ∈ Z⊥ ⇒ [[n]]σ = n

• x ∈ Var ⇒ [[x]]σ = σx (representa el valor de x en el estado σ)

• a1 + a2 ⇒ [[a1 + a2]]σ = [[a1]]σ + [[a2]]σ (análogo para la resta)

• a1 · a2 ⇒ [[a1 · a2]]σ = [[a1]]σ · [[a2]]σ

Ejemplo 5.1. Sea la expresión aritmética a = 3− (xy + 4)2 y sea σ ∈ Σ tal que σx = −1

y σy = 3. Se verifica que,

[[a]]σ = [[3− (xy + 4)2]]σ = [[3]]σ − [[(xy + 4)2]]σ = 3− ([[xy + 4]]σ)2 =

= 3− ([[xy]]σ + [[4]]σ)2 = 3− ([[x]]σ[[y]]σ + 4)2 = 3− (σx · σy + 4)2 = 3− ((−1)3 + 4)2

Page 50: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

49

(2) Semántica denotacional de Expresiones Booleanas. Para cada expresión booleana

b definimos la semántica denotacional de b en el estado σ como [[b]]Bσ donde:

[[ ]]B : Expr. Bool. −→ (Σ→ {true, false})

b 7−→ [[b]]B

[[b]]B : Σ −→ {true, false}

σ 7−→ [[b]]Bσ

Alternativamente, podemos definir [[b]]σ como:

[[ ]]B : (Expr. Bool.× Σ) −→ {true, false}

(b, σ) 7−→ [[b]]Bσ

Para simplificar la notación escribiremos [[b]]σ para denotar la semántica denotacional de

b en el estado σ.

• [[true]]σ = true y [[false]]σ = false

• [[¬b]]σ =

true si [[b]]σ = false

false si [[b]]σ = true

• [[b1 ∨ b2]]σ =

true si [[b1]]σ = true o [[b2]]σ = true

false si [[b1]]σ = false y [[b2]]σ = false

• [[a1 < a2]]σ =

true si [[a1]]σ < [[a2]]σ

false en caso contrario

• [[a1 == a2]]σ =

true si [[a1]]σ = [[a2]]σ

false en caso contrario(3) Semántica denotacional de Comandos. Para cada comando c definimos la semántica

denotacional de c en el estado σ como [[c]]Cσ donde:

[[ ]]C : Comandos −→ (Σ→ Σ)

c 7−→ [[c]]C

[[c]]C : Σ −→ Σ

σ 7−→ [[c]]Cσ = σ′

Alternativamente, podemos definir [[c]]Cσ como:

[[ ]]C : (Comandos× Σ) −→ Σ

(c, σ) 7−→ [[c]]Cσ

Page 51: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

50

Para simplificar la notación escribiremos [[c]]σ para denotar la semántica denotacional de

c en el estado σ.

• Función semántica de Skip:[[Skip]] : Σ −→ Σ

σ 7−→ σ[[Skip]] = IdΣ ⇒ [[Skip]]σ = σ

• Función semántica de asignación de valores:[[x := n]] : Σ −→ Σ

σ 7−→ [σ |x : n][[x := n]]σ = [σ |x : n]

donde [σ |x : n] es un nuevo estado σ′ que coincide con σ salvo en x = n.

• Función semántica del condicional:

[[if b then c1 else c2]]σ =

[[c1]]σ si [[b]]σ = true

[[c2]]σ si [[b]]σ = false• Función semántica de la composición de comandos:

[[c1; c2]]σ = [[c2]]([[c1]]σ)

• Función semántica de la iteración definida:

[[for a do c]]σ =

([[c]][[a]]σ)σ si [[a]]σ ≥ 0

σ si [[a]]σ < 0

• Detallaremos la función semántica de la iteración indefinida [[while b do c]]σ = en el

siguiente aparcado.

Función semántica de la iteración indefinida.

Como primer intento para definir la semántica de la iteración indefinida podemos pensar que,

while b do c ≡ if b then (c; ( while b do c))

De esta forma su semántica quedaría determinada por la semántica del condicional:

[[while b do c]]σ = [[if b then(c; while b do c)]]σ =

[[c; while b do c]]σ si [[b]]σ = true

σ si [[b]]σ = falseSi llamamos c1 = while b do c tendríamos que,

[[c1]]σ =

[[c; c1]]σ si [[b]]σ = true

σ si [[b]]σ = false

Page 52: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

51

Veamos con un ejemplo concreto que la definición dada no nos sirve ya que no tiene una única

solución.

Ejemplo 5.2. Sea c1 = (while¬(x == 0) do x := x− 2). Según lo mencionado anteriormente, su

función semántica sería:

[[c1]]σ =

[[x := x− 2; c1]]σ si [[¬(x == 0)]]σ = true

σ en caso contrario=

=

[[c1]][σ |x : σx− 2]σ si [[¬(x == 0)]]σ = true

σ en caso contrario

Veamos que hay un conjunto infinito de funciones que verifican la igualdad anterior.

Sea f : Σ→ Σ definida como sigue,

fσ(∗)=

f [σ |x : σx− 2]σ si [[¬(x == 0)]]σ = true

σ en caso contrario

Consideremos ahora otra función f : Σ→ Σ definida por,

fσ(◦)=

[σ |x : 0] si σx ≥ 0 par

σ′ si σx < 0 par

σ′′ si σx impar

Se comprueba que f satisface la igualdad (∗) por casos: σx > 0 par, σx > 0 impar, σx < 0 par,

σx < 0 impar y σx = 0 obteniendo la siguiente conclusión.

Conclusión: La ecuación de recurrencia (∗) no define una única función de Σ en Σ. Existen

infinitas soluciones.

¿Cómo se arregla la definición de la función semántica de la iteración indefinida, [[while b do c]]σ?

Construyendo una función F adecuada para poder aplicar el Teorema del Punto Fijo. Sea F

Page 53: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

52

la siguiente función,F : (Σ→ Σ) −→ (Σ→ Σ)

f 7−→ F (f) : Σ −→ Σ

σ 7−→ F (f)σ

definida por,

F (f)σ =

σ si [[b]]σ = false

f([[c]]σ) si [[b]]σ = true

para cada f ∈ (Σ→ Σ) y para cada σ ∈ Σ.

Para poder afirmar que existe Fix(F ) y está bien definido hay que ver:

• (Σ,≤) es un dcpo punteado con el orden puntual propio de las funciones,

σ, τ ∈ Σ, σ ≤ τ ⇔ σ(x) ≤ τ(x)

donde la función ⊥Σ : Var→ Z⊥ asigna a cada variable el valor ⊥ ∈ Z⊥, ⊥Σ(x) = ⊥Z⊥ .

• (Σ→ Σ,≤) es un dcpo punteado con el orden,

f1, f2 ∈ (Σ→ Σ), f1 ≤ f2 ⇔ f1(σ) ≤ f2(σ)

• F : (Σ −→ Σ) −→ (Σ −→ Σ) descrita anteriormente es continua. (Se propone como

ejercicio). Se puede probar utilizando una Proposición del Tema 2 (añadiendo que ⊥ va a

⊥).

De esta forma podemos aplicar el Teorema del Punto Fijo de Kleene-Scott para asegurar la

existencia de un punto fijo mínimo de F y así concluir que Fix(F ) = [[while b do c]] donde,

Fix : ((Σ→ Σ) −→ (Σ→ Σ)) −→ (Σ→ Σ)

F 7−→ Fix(F ) = ∨{⊥, F (⊥), F 2(⊥), . . .}

Si llamamos f = Fix(F ) se cumple que:

fσ =

σ si [[b]]σ = false

f([[c]]σ) si [[b]]σ = true

Page 54: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

53

En la siguiente proposición se describe una forma más manejable de definir la función semántica

de la iteración indefinida.

Proposición 5.3. Sea Σ el dcpo punteado de los estados, b una expresión booleana y c un comando.

Para todo estado σ ∈ Σ se tiene:

(a): [[while b do c]]σ = ⊥ si se satisface alguna de las dos alternativas siguientes:

• [[b]][[c]]iσ = true para todo i ≥ 0 o

• [[b]][[c]]i0σ = ⊥ para algún i0 ≥ 0 verificándose además que [[b]][[c]]iσ = true para cada

i < i0.

(b): [[while b do c]]σ = [[c]]nσ si n es el menor entero para el que se tiene [[b]]◦ [[c]]nσ = false

y [[b]] ◦ [[c]]iσ = true para todo i < n.

Ejemplos.

Iteración definida (for).

Sean n,m, z expresiones aritméticas. Consideramos el comando:

C = (z = 1; if (¬(m == 0)) then ( for m do (z = z · n)))

Supongamos que a, b ∈ Z, b ≥ 0 y σ ∈ Σ tal que σn = a y σm = b. Veamos que [[C]]σ consiste en

hacer ab.

Supongamos b = 0, entonces σm = 0 y por lo tanto, no se cumple la condición del condicional.

[[C]]σ = [[z = 1]]σ = [σ | z : 1]⇐⇒ [[C]]σ(z) = 1 = a0

Supongamos b > 0, entonces sí se cumple la condición del condicional.

[[C]]σ = [[if¬(m == 0) then ( for m do (z = z · n))]]([[z = 1]]σ) =

= [[ for m do z = z · n]][σ | z : 1] = ([[z = z · n]][[m]][σ | z : 1])[σ | z : 1] =

= [[z = z · n]]σm[σ | z : 1] = [[z = z · n]]b[σ | z : 1]

Debemos probar que [[z = z · n]]b[σ | z : 1] = [σ | z : ab]. Usamos inducción sobre b:

• b = 1⇒ [[z = z · n]]b[σ | z : 1] = [σ | z : σz · σn , z : 1] = [σ | z : a]

Page 55: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

54

• Suponemos que la igualdad se verifica para b− 1:

[[z = z · n]]b−1[σ | z : 1] = [σ | z : ab−1]

• Veamos que la igualdad se verifica para b:

[[z = z · n]]b[σ | z : 1] = [[z = z · n]]([[z = z · n]]b−1[σ | z : 1]) =

= [[z = z · n]][σ | z : ab−1] = [σ | z : σz · σn , σz : ab−1] =

= [σ | z : ab−1 · a] = [σ | z : ab]

Iteración indefinida (while).

Sean x, y, q, r expresiones aritméticas y σ ∈ Σ tal que σx, σy ∈ Z, σx ≥ 0 y σy > 0. Consideramos

el comando:

C = (r = x; q = 0; while (y ≤ r) do (r = r − y; q = q + 1))

Veamos que [[C]]σ transforma q en el cociente de la división de σx por σy donde σr es el resto de

la misma.

Sea C1 = while (y ≤ r) do (r = r − y; q = q + 1). Se tiene que:

[[C]]σ = [[C1]]([[q = 0]]([[r = x]]σ)) = [[C1]][[q = 0]][σ | r : σx] = [[C1]][σ | r : σx , q : 0]

Sea C2 el comando (r = r − y; q = q + 1). Llamamos σ′ = [σ | r : σx . q : 0].

[[C2]]σ′ = [[q = q + 1]]([[r = r − y]]σ′) = [[q = q + 1]][σ′ | r : σ′r − σ′y] =

= [σ′ | r : σ′r − σ′y , q : σ′q + 1] = [σ | r : σx− σy , q : 1]

Se demuestra por inducción sobre i ≥ 0 que,

[[C2]]iσ′ = [[C2]][[C2]]i−1σ′ = [[C2]][σ | r : σx− (i− 1)σy, q : i− 1] = [σ | r : σx− iσy, q : i]

Por lo tanto:

[[y ≤ r]] ◦ [[C2]]iσ′ =

ture si σy ≤ σx− iσy = σr

false si σy > σx− iσy = σr

Tomando k como el menor entero del conjunto {i ∈ N : 0 > σx − (i + 1)σy} estamos en la

hipótesis de la Proposición anterior para calcular la semántica denotacional del while.

Page 56: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

55

Las igualdades anteriores y la proposición anterio tenemos que:

[[C]]σ = [[C1]]σ′ = [[C2]]kσ′ = [σ | r : σx− k · σy, q : k]

Por lo tanto:

σx− ([[C]]σ)(q)σy = σx− k · σy = [[C]]σ(r)

Por como se ha elegido k se satisfacen las desigualdades:

0 > σx− (k + 1)σy 0 ≤ σx− kσy

El algoritmo de la división en Z da que [[C]]σ(q) = k coincide con el cociente de la división de

σx por σy donde [[C]]σ(r) es el resto.

Page 57: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

56

Ejercicios para nota

(1) Probar que el conjunto de estados Σ = (Var → Z⊥) con el orden puntual propio de las

funciones es un dcpo punteado.

(2) Probar que la función F ,

F : (Σ→ Σ) −→ (Σ→ Σ)

f 7−→ F (f) : Σ −→ Σ

σ 7−→ F (f)σ

definida por,

F (f)σ =

σ si [[b]]σ = false

f([[c]]σ) si [[b]]σ = true

para cada f ∈ (Σ→ Σ) y para cada σ ∈ Σ es una función continua.

(3) Dados a = (x + y)2 − 3(x3 + y3), σ ∈ Σ tal que σx = 1, σy = 2, calcular [[a]]σ y

[[a]][σ |x : σx+ 3].

(4) Usar la semántica denotacional para probar que el comando:

i = 0; b = false;

while i ≤ n do

if i · i == n then b = true;

i = i+ 1

sirve para determinar cuándo un entero positivo dado (n) es un cuadrado perfecto.

Page 58: Teoría de Dominios y Modelos Denotacionales · Ejemplo2.6. (1) Las funciones constantes dcpos son continuas. Sean Dy Edcpos y f : D!Etal que f(x) = cdondec2Eesunelementofijo. fesmonótonacreciente:

57

References

[1] José Antonio Cuenca Mira, Teoría de dominios y semántica denotacional, Apuntes del Profesor, 2002.

[2] María de los Ángeles Gómez Molleda, Notas manuscritas de clase.

[3] C. A. Gunter y D. S. Scott, Semantic Domains, Handbook of Theoretical Computer Science, Volume B, 1990.

[4] José Antonio Jiménez Millán, Compiladores y procesadores de lenguajes, Servicio de Publicaciones de la

Universidad de Cádiz, 2009.