Mtodos Formales y Anlisis de Herramientas para la

  • Slides: 85
Download presentation
Métodos Formales y Análisis de Herramientas para la Producción de Software Aristides Dasso, Ana

Métodos Formales y Análisis de Herramientas para la Producción de Software Aristides Dasso, Ana Funes {arisdas, afunes}@unsl. edu. ar Universidad Nacional de San Luis 2006 A. Dasso, A. Funes Métodos Formales. . .

Listas A. Dasso, A. Funes Métodos Formales. . .

Listas A. Dasso, A. Funes Métodos Formales. . .

Listas Una lista es una colección ordenada de valores del mismo tipo. Ejemplos: <2,

Listas Una lista es una colección ordenada de valores del mismo tipo. Ejemplos: <2, 5, 0, 1, 2> <“Juan”, “María”> <true, false> A. Dasso, A. Funes Métodos Formales. . . 3

Expresiones de tipo lista La expresión de tipo expr_de_tipo* representa el tipo que contiene

Expresiones de tipo lista La expresión de tipo expr_de_tipo* representa el tipo que contiene todas listas finitas de tipo expr_de_tipo. A. Dasso, A. Funes Métodos Formales. . . 4

Expresiones de tipo lista Ejemplo: Bool* Este tipo representa infinitas secuencias finitas de Booleanos:

Expresiones de tipo lista Ejemplo: Bool* Este tipo representa infinitas secuencias finitas de Booleanos: <> --lista vacía <true> <false> <true, true> <true, false>. . . A. Dasso, A. Funes Métodos Formales. . . 5

Expresiones de tipo lista La expresión de tipo expr_de_tipo representa el tipo que contiene

Expresiones de tipo lista La expresión de tipo expr_de_tipo representa el tipo que contiene las listas infinitas así como las listas finitas de tipo expr_de_tipo. A. Dasso, A. Funes Métodos Formales. . . 6

Expresiones de tipo lista Ejemplo: Bool Este tipo contiene las infinitas secuencias finitas de

Expresiones de tipo lista Ejemplo: Bool Este tipo contiene las infinitas secuencias finitas de Booleanos además de las infinitas: <> <true> <false> <true, true> <true, false>. . . <false, true, false, . . . >. . . A. Dasso, A. Funes Métodos Formales. . . 7

Propiedades de las listas • Pueden existir valores repetidos. Por lo tanto, <10, 2,

Propiedades de las listas • Pueden existir valores repetidos. Por lo tanto, <10, 2, 2> <10, 2> • Cuando decimos que una lista es ordenada significa que podemos hablar de un primer elemento, un segundo elemento, etc. Es decir que el orden es relevante, p. e. : <10, 2> <2, 10>. • Para cualquier tipo T, T* es un subtipo de T. A. Dasso, A. Funes Métodos Formales. . . 8

Listas Una lista puede ser definida explícitamente enumerando sus elementos: <expr 1, . .

Listas Una lista puede ser definida explícitamente enumerando sus elementos: <expr 1, . . . , exprn> donde expri tienen un tipo maximal común y n 0. Ejemplos : <1, 2, 3, 1> <“Juan”, “Pedro”> <> A. Dasso, A. Funes Métodos Formales. . . 9

Listas Una lista puede ser definida usando una expresión de listas con rango: <expr

Listas Una lista puede ser definida usando una expresión de listas con rango: <expr 1. . expr 2> donde expr 1 y expr 2 son expresiones enteras. Representa la lista de enteros ordenados en forma creciente, incluyendo ambos límites. Si expr 1 > expr 2 la lista resultante es la lista vacía. A. Dasso, A. Funes Métodos Formales. . . 10

Listas Ejemplos: <3. . 7> = <3, 4, 5, 6, > <3. . 3>

Listas Ejemplos: <3. . 7> = <3, 4, 5, 6, > <3. . 3> = <3> <3. . 2> = < > <3. . 23*4> = <3. . 92> = <3, 4, 5, 6, 7, . . . , 92> A. Dasso, A. Funes Métodos Formales. . . 11

Listas Una lista puede ser definida implícitamente: <expr binding in expr_de_lista • expr_boolena> El

Listas Una lista puede ser definida implícitamente: <expr binding in expr_de_lista • expr_boolena> El binding debe hacer matching con los elementos de la lista representada por expr_de_lista. A. Dasso, A. Funes Métodos Formales. . . 12

Listas Ejemplo 1: <2*n n in <0. . 3>> • se lee “la lista

Listas Ejemplo 1: <2*n n in <0. . 3>> • se lee “la lista de valores 2 n donde n varía sobre la lista <0. . 3>”. • es igual a la lista <0, 2, 4, 6 >. • notar que el ordenamiento en la lista <0. . 3> se preserva en la nueva lista. A. Dasso, A. Funes Métodos Formales. . . 13

Listas Ejemplo 2: <n n in <1. . 100> • es_primo(n) > • se

Listas Ejemplo 2: <n n in <1. . 100> • es_primo(n) > • se lee “la lista de valores n donde n varía sobre la lista <1. . 100> considerando solamente los números primos”. • es igual a la lista <2, 3, 5, 7, . . . , 97>. A. Dasso, A. Funes Métodos Formales. . . 14

Listas Ejemplo 3: type Database = Record*, Record = Key Data, Key, Data Supongamos

Listas Ejemplo 3: type Database = Record*, Record = Key Data, Key, Data Supongamos queremos un reporte de aquellos registros interesantes, definidos por alguna función booleana sobre las claves. El report contendrá entradas consistiendo de la clave y una transformación sobre el dato asociado. A. Dasso, A. Funes Métodos Formales. . . 15

Listas Ejemplo 3 (cont. ): value es_interesante: Key Bool, transformacion: Data Report_Data, report: Database

Listas Ejemplo 3 (cont. ): value es_interesante: Key Bool, transformacion: Data Report_Data, report: Database (Key Report_Data)* report (db) < (k, transformacion(d)) | (k, d) in db • es_interesante(k) > type Report_Data A. Dasso, A. Funes Métodos Formales. . . 16

Indexando Listas • Se puede extraer un elemento particular de una lista usando un

Indexando Listas • Se puede extraer un elemento particular de una lista usando un índice. • Un índice debe ser un número entero mayor o igual a 1 y menor o igual a la longitud de la lista (finita). • Forma general: expr_lista(expr_entera) A. Dasso, A. Funes Métodos Formales. . . 17

Indexando Listas Ejemplo: value l: Nat* = <10, 20, 30> l(2) = 20 <1,

Indexando Listas Ejemplo: value l: Nat* = <10, 20, 30> l(2) = 20 <1, 25, 2> (3) = 2 <<‘a’, ‘b’>, <‘ 9’, ‘g’, ‘p’>>(1) = <‘a’, ‘b’> <<‘a’, ‘b’>, <‘ 9’, ‘g’, ‘p’>>(1) (2) = ‘b’ A. Dasso, A. Funes Métodos Formales. . . 18

Definición de listas infinitas Una lista infinita puede ser definida: 1) a través de

Definición de listas infinitas Una lista infinita puede ser definida: 1) a través de una definición de un value, y un axioma que especifica que es infinita. Ejemplo: value todos_los_naturales: Nat axiom todos_los_naturales(1) = 0, i: Nat • i 2 todos_los_naturales(i) = todos_los_naturales(i-1) +1 A. Dasso, A. Funes Métodos Formales. . . 19

Definición de listas infinitas 2) a partir de otra lista infinita. Ejemplo: <n n

Definición de listas infinitas 2) a partir de otra lista infinita. Ejemplo: <n n in todos_los_naturales • es_primo(n) > A partir de la lista infinita de números naturales define la lista de todos los números primos. A. Dasso, A. Funes Métodos Formales. . . 20

Operadores de listas Concatenación ^ : T * T T Produce una lista que

Operadores de listas Concatenación ^ : T * T T Produce una lista que consiste de todos los elementos del primer argumento seguidos por todos los elementos del segundo: <e 1, . . . , en> ^ <en+1, . . . > = <e 1, . . . , en+1, . . . > Ejemplos: <1, 2, 3> ^ <4, 5> = <1, 2, 3, 4, 5> <1, 2, 3> ^ < > = <1, 2, 3> A. Dasso, A. Funes Métodos Formales. . . 21

Operadores de listas Concatenación • Notar que el primer argumento de la concatenación debe

Operadores de listas Concatenación • Notar que el primer argumento de la concatenación debe ser una lista finita (no se puede agregar nada al final de una lista infinita ya que no tiene fin). • El segundo argumento, sin embargo, puede ser una lista infinita, p. e: <0> ^ todos_los_naturales = <0, 0, 1, 2, 3, 4, . . . > A. Dasso, A. Funes Métodos Formales. . . 22

Operadores de listas Obtener cabeza de una lista hd: T T Devuelve el primer

Operadores de listas Obtener cabeza de una lista hd: T T Devuelve el primer elemento de la lista: hd <e 1, e 2. . . > = e 1 Ejemplos: hd <1, 2, 3> = 1 hd todos_los_naturales = 0 A. Dasso, A. Funes Métodos Formales. . . 23

Operadores de Listas Obtener cola de una lista tl: T T Devuelve la lista

Operadores de Listas Obtener cola de una lista tl: T T Devuelve la lista original sin la cabeza: tl <e 1, e 2. . . > = <e 2 , e 3, . . . > Ejemplos: tl <1, 2, 3> = <2, 3> tl todos_los_naturales = <1, 2, 3, 4, . . . > A. Dasso, A. Funes Métodos Formales. . . 24

Operadores de Listas Obtener longitud de una lista len: T Nat • Devuelve la

Operadores de Listas Obtener longitud de una lista len: T Nat • Devuelve la longitud de una lista finita. len <e 1, e 2. . . en> = n Ejemplos: len <1, 7, 2> = 3 len < > = 0 • La aplicación a una lista infinita devuelve chaos. len todos_los_naturales chaos A. Dasso, A. Funes Métodos Formales. . . 25

Operadores de Listas Obtener índices de una lista inds: T Nat-infset • Devuelve los

Operadores de Listas Obtener índices de una lista inds: T Nat-infset • Devuelve los índices de una lista. • Sea lf una lista finita inds lf = {1. . len lf} • Sea li una lista infinita inds li = {i i: Nat • i 1} A. Dasso, A. Funes Métodos Formales. . . 26

Operadores de Listas Obtener índices de una lista Ejemplos inds <2, 4, 2> =

Operadores de Listas Obtener índices de una lista Ejemplos inds <2, 4, 2> = {1, 2, 3} inds < > = {} inds todos_los_naturales = {ind ind: Nat • ind 1} A. Dasso, A. Funes Métodos Formales. . . 27

Operadores de Listas Obtener elementos de una lista elems: T T-infset Devuelve los elementos

Operadores de Listas Obtener elementos de una lista elems: T T-infset Devuelve los elementos de una lista. elems l = {l(i) i: Nat • i inds 1} Ejemplos: elems <2, 4, 2> = {2, 4} elems < > = {} elems todos_los_naturales = {n n: Nat } A. Dasso, A. Funes Métodos Formales. . . 28

Listas de Caracteres (Text) • Text es una abreviatura para Char* • Todas las

Listas de Caracteres (Text) • Text es una abreviatura para Char* • Todas las operaciones para listas pueden ser aplicadas a Text. A. Dasso, A. Funes Métodos Formales. . . 29

Listas de Caracteres (Text) “abc” = <‘a’, ‘b’, ‘c’> “” = < > hd

Listas de Caracteres (Text) “abc” = <‘a’, ‘b’, ‘c’> “” = < > hd “abd” = ‘a’ tl “a” = “” “abc” ^ “de” ^ “f” = “abcdef” inds “abc” = {1, 2, 3} elems “abba” = {‘a’, ‘b’} len “abba” = 4 A. Dasso, A. Funes Métodos Formales. . . 30

Ejemplo Cola o Fila Los elementos pueden ser puestos y pueden dejar la cola

Ejemplo Cola o Fila Los elementos pueden ser puestos y pueden dejar la cola uno, siempre siguiendo la política FIFO (First In-Fist Out). A. Dasso, A. Funes Métodos Formales. . . 31

A. Dasso, A. Funes Métodos Formales. . . 32

A. Dasso, A. Funes Métodos Formales. . . 32

Ejemplo Sorting Consideremos la especificación de una función que dada una lista de enteros

Ejemplo Sorting Consideremos la especificación de una función que dada una lista de enteros devuelve la lista ordenada de menor a mayor. A. Dasso, A. Funes Métodos Formales. . . 33

A. Dasso, A. Funes Métodos Formales. . . 34

A. Dasso, A. Funes Métodos Formales. . . 34

Ejemplo Base de Datos Un paso de desarrollo A. Dasso, A. Funes Métodos Formales.

Ejemplo Base de Datos Un paso de desarrollo A. Dasso, A. Funes Métodos Formales. . . 35

Representaciones para la BD type Database empty insert(k 2, d 2, insert(k 1, d

Representaciones para la BD type Database empty insert(k 2, d 2, insert(k 1, d 1, empty)) type Database = (Key Data)-set {} {(k 1, d 1), (k 2, d 2)} type Database = (Key Data)* <> <(k 1, d 1), (k 2, d 2)> A. Dasso, A. Funes Métodos Formales. . . 36

A. Dasso, A. Funes Métodos Formales. . . 37

A. Dasso, A. Funes Métodos Formales. . . 37

) A. Dasso, A. Funes Métodos Formales. . . , 38

) A. Dasso, A. Funes Métodos Formales. . . , 38

A. Dasso, A. Funes Métodos Formales. . . 39

A. Dasso, A. Funes Métodos Formales. . . 39

Ejemplo Base de datos (II) • Supongamos además que se requiere que la base

Ejemplo Base de datos (II) • Supongamos además que se requiere que la base de datos se encuentre ordenada por las claves. A. Dasso, A. Funes Métodos Formales. . . 40

scheme KEY = class type Key value less_than : Key Bool axiom [anti_reflexiva] k

scheme KEY = class type Key value less_than : Key Bool axiom [anti_reflexiva] k : Key • ~less_than(k, k), [transitiva] k 1, k 2, k 3 : Key • less_than(k 1, k 2) less_than(k 2, k 3) less_than(k 1, k 3), [orden_total] k 1, k 2 : Key • less_than(k 1, k 2) less_than(k 2, k 1) k 1 = k 2 end A. Dasso, A. Funes Métodos Formales. . . 41

Notar que: • El tipo Key y la función less_than se encuentran definidos en

Notar que: • El tipo Key y la función less_than se encuentran definidos en un módulo separado. • La función less_than define un orden total sobre las claves. Si las claves fueran enteros, el orden podría ser <. A. Dasso, A. Funes Métodos Formales. . . 42

scheme LIST_DATABASE_II = extend KEY with extend DATA with class type Record = Key

scheme LIST_DATABASE_II = extend KEY with extend DATA with class type Record = Key Data, Database = {| db : Record* • is_wf_Database(db) |} value is_wf_Database : Record* Bool is_wf_Database(rl) ( (k 1, d 1), (k 2, d 2) : Record, left, right : Record* • rl = left ^ < (k 1, d 1), (k 2, d 2) > ^ right less_than(k 1, k 2)), A. Dasso, A. Funes Métodos Formales. . . 43

Notar que: • El tipo Database está definido como un subtipo de listas de

Notar que: • El tipo Database está definido como un subtipo de listas de registros bien formados. • Un registro es bien formado si para cualquier par de registros sucesivos , la clave del registro de la “izquierda” es menor que el registro de la “derecha”. Esta condición previene las claves duplicadas ya que es consecuencia del axioma anti -reflexiva del módulo KEY. A. Dasso, A. Funes Métodos Formales. . . 44

empty : Database = < >, insert : Key Database insert(k, d, db) if

empty : Database = < >, insert : Key Database insert(k, d, db) if db = < > then < (k, d) > else let (k 1, d 1) = hd db in if k = k 1 then < (k, d) > ^ tl db elsif less_than(k, k 1) then < (k, d) > ^ db else < hd db > ^ insert(k, d, tl db) end end, A. Dasso, A. Funes Métodos Formales. . . 45

remove : Key Database remove(k, db) < (k 1, d) | (k 1, d)

remove : Key Database remove(k, db) < (k 1, d) | (k 1, d) in db • k 1 k >, defined : Key Database Bool defined(k, db) if db = < > then false else let (k 1, d 1) = hd db in if less_than(k, k 1) then false elsif k 1 = k then true else defined(k, tl db) end end, A. Dasso, A. Funes Métodos Formales. . . 46

lookup : Key Database Data lookup(k, db) if db = < > then not_found

lookup : Key Database Data lookup(k, db) if db = < > then not_found else let (k 1, d 1) = hd db in if less_than(k, k 1) then not_found elsif k 1 = k then d 1 else lookup(k, tl db) end end A. Dasso, A. Funes Métodos Formales. . . 47

Notar que: • Las funciones insert, defined and lookup han sido definidas orientadas a

Notar que: • Las funciones insert, defined and lookup han sido definidas orientadas a la implementación, aprovechando el hecho que la base de datos se encuentra ordenada. • La función lookup se hizo total (para bases de datos bien formadas), retornando un valor de error en el caso de no encontrarse la clave. Por lo tanto definimos un valor de error not_found de tipo Data, el cual quedó subespecificado. • Tanto Data como not_found se encuentran definidos en un módulo separado A. Dasso, A. Funes Métodos Formales. . . 48

scheme DATA = class type Data value not_found : Data end A. Dasso, A.

scheme DATA = class type Data value not_found : Data end A. Dasso, A. Funes Métodos Formales. . . 49

Ejercicios A. Dasso, A. Funes Métodos Formales. . . 50

Ejercicios A. Dasso, A. Funes Métodos Formales. . . 50

Ejercicios A. Dasso, A. Funes Métodos Formales. . . 51

Ejercicios A. Dasso, A. Funes Métodos Formales. . . 51

Ejercicios A. Dasso, A. Funes Métodos Formales. . . 52

Ejercicios A. Dasso, A. Funes Métodos Formales. . . 52

Mapas A. Dasso, A. Funes Métodos Formales. . . 53

Mapas A. Dasso, A. Funes Métodos Formales. . . 53

Mapas • Un mapa es una colección desordenada de pares de valores. • Tienen

Mapas • Un mapa es una colección desordenada de pares de valores. • Tienen una estructura tipo tabla, similar a una función, que transforma valores de un tipo en valores de otro tipo. A. Dasso, A. Funes Métodos Formales. . . 54

Mapas Ejemplos: [3 | true, 5 | false] mapa de enteros en booleanos. [“Carlos”

Mapas Ejemplos: [3 | true, 5 | false] mapa de enteros en booleanos. [“Carlos” | 7, “Juan” | 2, “Maria” | 7] mapa de textos en enteros. A. Dasso, A. Funes Métodos Formales. . . 55

Dominio de un Mapa El conjunto de valores para los cuales un mapa está

Dominio de un Mapa El conjunto de valores para los cuales un mapa está definido es referido como el dominio del mapa. Ejemplo: [“Carlos” | 7, “Juan” | 2, “Maria” | 7] el dominio es {“Carlos”, “Juan”, “María”} A. Dasso, A. Funes Métodos Formales. . . 56

Rango de un Mapa El conjunto de valores a los cuales un mapa transforma

Rango de un Mapa El conjunto de valores a los cuales un mapa transforma es referido como el rango del mapa. Ejemplo: [“Carlos” | 7, “Juan” | 2, “Maria” | 7] el rango es {2, 7} A. Dasso, A. Funes Métodos Formales. . . 57

Expresiones de tipo Mapa Una expresión de tipo de la forma expr_de_tipo 1 expr_de_tipo

Expresiones de tipo Mapa Una expresión de tipo de la forma expr_de_tipo 1 expr_de_tipo 2 m representa los mapas finitos determinísticos que transforman valores de tipo expr_de_tipo 1 en valores de tipo expr_de_tipo 2. A. Dasso, A. Funes Métodos Formales. . . 58

Expresiones de tipo Mapa Ejemplo: A. Dasso, A. Funes Métodos Formales. . . 59

Expresiones de tipo Mapa Ejemplo: A. Dasso, A. Funes Métodos Formales. . . 59

Expresiones de tipo Mapa Una expresión de tipo de la forma ~ expr_de_tipo 1

Expresiones de tipo Mapa Una expresión de tipo de la forma ~ expr_de_tipo 1 2 m representa los mapas parciales que transforman valores de tipo expr_de_tipo 1 en valores de tipo expr_de_tipo 2. Pueden ser infinitos y no deterministicos. A. Dasso, A. Funes Métodos Formales. . . 60

Expresiones de tipo Mapa Ejemplo: A. Dasso, A. Funes Métodos Formales. . . 61

Expresiones de tipo Mapa Ejemplo: A. Dasso, A. Funes Métodos Formales. . . 61

Definiciones explícitas de Mapas Un mapa puede ser definido explícitamente enumerando sus asociaciones: con

Definiciones explícitas de Mapas Un mapa puede ser definido explícitamente enumerando sus asociaciones: con n 0 Ejemplos : A. Dasso, A. Funes Métodos Formales. . . 62

Definiciones implícitas de Mapas Un mapa puede ser definido implícitamente dando un predicado para

Definiciones implícitas de Mapas Un mapa puede ser definido implícitamente dando un predicado para definir sus asociaciones: donde n 1. A. Dasso, A. Funes Métodos Formales. . . 63

Definiciones implícitas de Mapas Ejemplo: Se lee “el mapa de n en 2 *

Definiciones implícitas de Mapas Ejemplo: Se lee “el mapa de n en 2 * n donde n es un número natural tal que n es menor o igual a 2”. Es igual a: A. Dasso, A. Funes Métodos Formales. . . 64

Mapas Infinitos Es posible por medio de una expresión por comprensión crear un mapa

Mapas Infinitos Es posible por medio de una expresión por comprensión crear un mapa infinito. Ejemplo: es igual al mapa infinito: A. Dasso, A. Funes Métodos Formales. . . 65

La aplicación • Un mapa puede ser aplicado a un valor si ese valor

La aplicación • Un mapa puede ser aplicado a un valor si ese valor pertenece al dominio del mapa. • La forma básica de la aplicación es: • y la forma derivada es: A. Dasso, A. Funes Métodos Formales. . . 66

Aplicación Ejemplos: A. Dasso, A. Funes Métodos Formales. . . 67

Aplicación Ejemplos: A. Dasso, A. Funes Métodos Formales. . . 67

Operadores de Mapas Obtener dominio Retorna el conjunto de valores para los cuales el

Operadores de Mapas Obtener dominio Retorna el conjunto de valores para los cuales el mapa está definido. Ejemplos: dom [n | 2 n | n: Nat] = {n | n: Nat} dom [ ] = { } A. Dasso, A. Funes Métodos Formales. . . 68

Operadores de Mapas Obtener rango Retorna el rango del mapa. Ejemplos: rng [n |

Operadores de Mapas Obtener rango Retorna el rango del mapa. Ejemplos: rng [n | 2 n | n: Nat] = {2 n | n: Nat} rng [ ] = { } A. Dasso, A. Funes Métodos Formales. . . 69

Operadores de Mapas Sobre-escritura Sobre-escribe un mapa con otro. Ejemplos: [3 | true, 5

Operadores de Mapas Sobre-escritura Sobre-escribe un mapa con otro. Ejemplos: [3 | true, 5 | false] † [5 | true] = [3 | true, 5 | true] [3 | true] † [ ] = [3 | true] A. Dasso, A. Funes Métodos Formales. . . 70

Operadores de Mapas Unión Ejemplos: A. Dasso, A. Funes Métodos Formales. . . 71

Operadores de Mapas Unión Ejemplos: A. Dasso, A. Funes Métodos Formales. . . 71

Operadores de Mapas Restricción por La operación “restricción por” remueve un conjunto de valores

Operadores de Mapas Restricción por La operación “restricción por” remueve un conjunto de valores del dominio de un mapa. A. Dasso, A. Funes Métodos Formales. . . 72

Operadores de Mapas Restricción por Ejemplos: [3 | true, 5 | false]  {3}

Operadores de Mapas Restricción por Ejemplos: [3 | true, 5 | false] {3} = [5 | false] [3 | true, 5 | false] {5, 7} = [3 | true] {} = [3 | true] A. Dasso, A. Funes Métodos Formales. . . 73

Operadores de Mapas Restricción a La “restricción a” restringe el dominio de un mapa

Operadores de Mapas Restricción a La “restricción a” restringe el dominio de un mapa a un conjunto de valores de dominio. Ejemplos: A. Dasso, A. Funes Métodos Formales. . . 74

Operadores de Mapas Restricción a Ejemplos: [3 | true, 5 | false] / {3}

Operadores de Mapas Restricción a Ejemplos: [3 | true, 5 | false] / {3} = [3 | true] [3 | true, 5 | false] / {5, 7} = [5 | false] [3 | true] / {} = [ ] A. Dasso, A. Funes Métodos Formales. . . 75

Operadores de Mapas Composición la composición de dos mapas m 1 y m 2

Operadores de Mapas Composición la composición de dos mapas m 1 y m 2 se define: A. Dasso, A. Funes Métodos Formales. . . 76

Operadores de Mapas Composición Ejemplo: [3 | true, 5 | false] º [“Klaus” |

Operadores de Mapas Composición Ejemplo: [3 | true, 5 | false] º [“Klaus” | 3, “John” | 7] = [“Klaus” | true] [3 | true] º [“John” | 7] = [ ] [3 | true, 3 | false] º [“Klaus” | 3] = [“Klaus” | true, “Klaus” | false ] A. Dasso, A. Funes Métodos Formales. . . 77

Un paso de desarrollo A. Dasso, A. Funes Métodos Formales. . . 78

Un paso de desarrollo A. Dasso, A. Funes Métodos Formales. . . 78

Representaciones para la BD A. Dasso, A. Funes Métodos Formales. . . 79

Representaciones para la BD A. Dasso, A. Funes Métodos Formales. . . 79

A. Dasso, A. Funes Métodos Formales. . . 80

A. Dasso, A. Funes Métodos Formales. . . 80

A. Dasso, A. Funes Métodos Formales. . . 81

A. Dasso, A. Funes Métodos Formales. . . 81

Ejemplo: Relaciones de Equivalencia class m type Relation = Element Partition_Id, Element, Partition_Id A.

Ejemplo: Relaciones de Equivalencia class m type Relation = Element Partition_Id, Element, Partition_Id A. Dasso, A. Funes Métodos Formales. . . 82

value well_formed : Relation Bool, initial : Relation, make_equivalent : Element Relation, are_equivalent :

value well_formed : Relation Bool, initial : Relation, make_equivalent : Element Relation, are_equivalent : Element Relation Bool A. Dasso, A. Funes Métodos Formales. . . 83

axiom r : Relation • well_formed(r) (all e : Element • e dom r),

axiom r : Relation • well_formed(r) (all e : Element • e dom r), well_formed(initial), e 1, e 2 : Element • e 1 e 2 => initial(e 1) initial(e 2), e 1, e 2 : Element, r : Relation : - make_equivalent(e 1, e 2, r) r † [e | r(e 2) | e : Element • r(e) = r(e 1)] pre {e 1, e 2} dom r, e 1, e 2 : Element, r : Relation • are_equivalent(e 1, e 2, r) r(e 1) = r(e 2) pre {e 1, e 2} dom r end A. Dasso, A. Funes Métodos Formales. . . 84

Ejercicios A. Dasso, A. Funes Métodos Formales. . . 85

Ejercicios A. Dasso, A. Funes Métodos Formales. . . 85