métodos formales y análisis de herramientas para la producción de software aristides dasso, ana...

85
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 Universidad Nacional de San Luis 2006

Upload: elisa-iglesias-vazquez

Post on 24-Jan-2016

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

Métodos Formales y Análisis de Herramientas para la Producción de Software

Aristides Dasso, Ana Funes

{arisdas, afunes}@unsl.edu.arUniversidad Nacional de San Luis

Universidad Nacional de San Luis2006

Page 2: 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

Listas

Page 3: 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

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

Listas

Una lista es una colección ordenada de valores del mismo tipo.

Ejemplos:

<2, 5, 0, 1, 2>

<“Juan”, “María”>

<true, false, false>

Page 4: 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

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

Expresiones de tipo lista

La expresión de tipo

expr_de_tipo*

representa el tipo que contiene todas las listas finitas de tipo expr_de_tipo.

Page 5: 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

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

Expresiones de tipo lista

Ejemplo: Bool*

Este tipo representa infinitas secuencias finitas de Booleanos:

<> --lista vacía<true><false><true, true><true, false>. . .

Page 6: 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

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

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 .

Page 7: 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

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

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, true, false, ...>. . .

Page 8: 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

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

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.

Page 9: 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

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

ListasUna lista puede ser definida explícitamente enumerando sus elementos:

<expr1,...,exprn>

donde expri tienen un tipo maximal común y n 0.

Ejemplos :<1, 2, 3, 1><“Juan”, “Pedro”>< >

Page 10: 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

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

Listas

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

<expr1 . . expr2>

donde expr1 y expr2 son expresiones enteras.

Representa la lista de enteros ordenados en forma creciente, incluyendo ambos límites.

Si expr1 > expr2 la lista resultante es la lista vacía.

Page 11: 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

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

Listas

Ejemplos:

<3 .. 7> = <3, 4, 5, 6, >

<3 .. 3> = <3>

<3 .. 2> = < >

<3 .. 23*4> = <3 .. 92> = <3, 4, 5, 6, 7,..., 92>

Page 12: 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

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

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 .

Page 13: 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

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

Listas

Ejemplo 1:

<2*n n in <0 .. 3>>

•se lee “la lista de valores 2n 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.

Page 14: 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

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

Listas

Ejemplo 2:

<nn 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>.

Page 15: 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

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

Listas

Ejemplo 3:

type

Database = Record*,

Record = Key Data,

Key, Data

Supongamos que 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.

Page 16: 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

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

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

Page 17: 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

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

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)

Page 18: 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

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

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’

Page 19: 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

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

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

Page 20: 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

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

Definición de listas infinitas

2) a partir de otra lista infinita.

Ejemplo:

<nn 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.

Page 21: 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

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

Operadores de listasConcatenación

^ : T* T T

Produce una lista que consiste de todos los elementos del primer argumento seguidos por todos los elementos del segundo:

<e1,...,en> ^ <en+1, ...> = <e1,..., en, en+1, ...>

Ejemplos:<1, 2, 3> ^ <4, 5> = <1, 2, 3, 4, 5> <1, 2, 3> ^ < > = <1, 2, 3>

Page 22: 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

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

Operadores de listasConcatenació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,...>

Page 23: 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

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

Operadores de listasObtener cabeza de una lista

hd: T T

Devuelve el primer elemento de la lista:

hd <e1, e2...> = e1

Ejemplos:

hd <1, 2, 3> = 1

hd todos_los_naturales = 0

~

Page 24: 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

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

Operadores de Listas Obtener cola de una lista

tl: T T

Devuelve la lista original sin la cabeza:

tl <e1, e2...> = <e2 , e3, ...> Ejemplos:

tl <1, 2, 3> = <2, 3> tl todos_los_naturales = <1, 2, 3, 4,...>

~

Page 25: 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

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

Operadores de Listas Obtener longitud de una lista

len: T Nat• Devuelve la longitud de una lista finita.

len <e1, e2...en> = n

Ejemplos:

len <1, 7, 2> = 3

len < > = 0• La aplicación a una lista infinita devuelve chaos.

len todos_los_naturales chaos

~

Page 26: 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

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

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}

Page 27: 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

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

Operadores de Listas Obtener índices de una lista

Ejemplos

inds <2, 4, 2> = {1,2,3}

inds < > = {}

inds todos_los_naturales = {indind: Nat • ind 1}

Page 28: 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

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

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 = {nn: Nat }

Page 29: 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

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

Listas de Caracteres (Text)

• Text es una abreviatura para Char*

• Todas las operaciones para listas pueden ser aplicadas a Text.

Page 30: 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

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

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

Page 31: 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

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

Ejemplo Cola o Fila

Los elementos pueden ser puestos y pueden dejar la cola uno a uno, siempre siguiendo la política FIFO (First In-Fist Out).

Page 32: 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

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

Page 33: 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

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

EjemploSorting

Consideremos la especificación de una función que dada una lista de enteros devuelve la lista ordenada de menor a mayor.

Page 34: 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

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

Page 35: 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

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

EjemploBase de Datos

Un paso de desarrollo

Page 36: 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

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

Representaciones para la BDtype Databaseemptyinsert(k2, d2, insert(k1, d1, empty))

type Database = (Key Data)-set{}{(k1,d1), (k2, d2)}

type Database = (Key Data)*

< ><(k1,d1), (k2, d2)>

Page 37: 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

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

Page 38: 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

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

) ,

Page 39: 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

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

Page 40: 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

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

Ejemplo Base de datos (II)

• Supongamos además que se requiere que la base de datos se encuentre ordenada por las claves.

Page 41: 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

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

scheme KEY = class type Key value less_than : Key Key Bool axiom [anti_reflexiva] k : Key • ~less_than(k, k), [transitiva] k1, k2, k3 : Key • less_than(k1, k2) less_than(k2, k3) less_than(k1, k3), [orden_total] k1, k2 : Key • less_than(k1, k2) less_than(k2, k1) k1 = k2 end

Page 42: 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

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

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 <.

Page 43: 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

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

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)

( (k1, d1), (k2, d2) : Record, left, right : Record* •

rl = left ^ < (k1, d1), (k2, d2) > ^ right

less_than(k1, k2)),

Page 44: 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

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

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.

Page 45: 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

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

empty : Database = < >, insert : Key Data Database Database insert(k, d, db) if db = < > then < (k, d) > else let (k1, d1) = hd db in if k = k1 then < (k, d) > ^ tl db elsif less_than(k, k1) then < (k, d) > ^ db else < hd db > ^ insert(k, d, tl db) end end end,

Page 46: 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

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

remove : Key Database Database remove(k, db) < (k1, d) | (k1, d) in db • k1 k >, defined : Key Database Bool defined(k, db) if db = < > then false else let (k1, d1) = hd db in if less_than(k, k1) then false elsif k1 = k then true else defined(k, tl db) end end end,

Page 47: 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

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

lookup : Key Database Data

lookup(k, db)

if db = < > then not_found

else

let (k1, d1) = hd db in

if less_than(k, k1) then not_found

elsif k1 = k then d1

else lookup(k, tl db)

end

end

end

end

Page 48: 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

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

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ó sub-especificado.

• Tanto Data como not_found se encuentran definidos en un módulo separado

Page 49: 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

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

scheme DATA =

class

type Data

value

not_found : Data

end

Page 50: 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

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

Ejercicios

Page 51: 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

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

Ejercicios

Page 52: 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

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

Ejercicios

Page 53: 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

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

Mapas

Page 54: 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

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

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.

Page 55: 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

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

Mapas

Ejemplos:

[3 | true, 5 | false]

mapa de enteros en booleanos.

[“Carlos” | 7, “Juan” | 2, “Maria” | 7]

mapa de textos en enteros.

Page 56: 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

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

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”}

Page 57: 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

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

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}

Page 58: 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

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

Expresiones de tipo Mapa

Una expresión de tipo de la forma

expr_de_tipo1 expr_de_tipo2

representa los mapas finitos determinísticos que transforman valores de tipo expr_de_tipo1 en valores de tipo expr_de_tipo2 .

m

Page 59: 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

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

Expresiones de tipo Mapa

Ejemplo:

Page 60: 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

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

Expresiones de tipo Mapa

Una expresión de tipo de la forma

expr_de_tipo1 expr_de_tipo2

representa los mapas parciales que transforman valores de tipo expr_de_tipo1 en valores de tipo expr_de_tipo2 .Pueden ser infinitos y no deterministicos.

m~

Page 61: 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

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

Expresiones de tipo Mapa

Ejemplo:

Page 62: 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

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

Definiciones explícitas de Mapas

Un mapa puede ser definido explícitamente enumerando sus asociaciones:

con n0

Ejemplos :

Page 63: 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

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

Definiciones implícitas de Mapas

Un mapa puede ser definido implícitamente

dando un predicado para definir sus

asociaciones:

donde n1 .

Page 64: 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

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

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:

Page 65: 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

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

Mapas Infinitos

Es posible por medio de una expresión por comprensión crear un mapa infinito.

Ejemplo:

es igual al mapa infinito:

Page 66: 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

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

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:

Page 67: 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

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

Aplicación

Ejemplos:

Page 68: 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

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

Operadores de MapasObtener dominio

Retorna el conjunto de valores para los cuales el mapa está definido.

Ejemplos:

dom [n | 2n | n: Nat] = {n | n: Nat}

dom [ ] = { }

Page 69: 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

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

Operadores de MapasObtener rango

Retorna el rango del mapa.

Ejemplos:

rng [n | 2 n | n: Nat] = {2 n | n: Nat}

rng [ ] = { }

Page 70: 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

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

Operadores de MapasSobre-escritura

Sobre-escribe un mapa con otro.

Ejemplos:

[3 | true, 5 | false] † [5 | true] =

[3 | true, 5 | true]

[3 | true] † [5 | true] = [3 | true, 5 | true]

[3 | true] † [ ] = [3 | true]

Page 71: 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

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

Operadores de MapasUnión

Ejemplos:

Page 72: 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

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

Operadores de MapasRestricción por

La operación “restricción por” remueve un conjunto de valores del dominio de un mapa.

Page 73: 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

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

Operadores de MapasRestricción por

Ejemplos:

[3 | true, 5 | false] \ {3} = [5 | false]

[3 | true, 5 | false] \ {5,7} = [3 | true]

[3 | true] \ {} = [3 | true]

Page 74: 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

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

Operadores de MapasRestricción a

La “restricción a” restringe el dominio de un mapa a un conjunto de valores de dominio.

Ejemplos:

Page 75: 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

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

Operadores de MapasRestricción a

Ejemplos:

[3 | true, 5 | false] / {3} = [3 | true]

[3 | true, 5 | false] / {5,7} = [5 | false]

[3 | true] / {} = [ ]

Page 76: 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

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

Operadores de MapasComposición

la composición de dos mapas m1 y m2 se define:

Page 77: 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

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

Operadores de MapasComposició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 ]

Page 78: 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

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

Un paso de desarrollo

Page 79: 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

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

Representaciones para la BD

Page 80: 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

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

Page 81: 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

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

Page 82: 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

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

class

type

Relation = Element Partition_Id,

Element,

Partition_Id

m

Ejemplo: Relaciones de Equivalencia

Page 83: 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

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

value

well_formed : Relation Bool,

initial : Relation,

make_equivalent : Element Element Relation Relation,

are_equivalent : Element Element Relation Bool

Page 84: 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

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

axiom

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

well_formed(initial),

e1, e2 : Element • e1 e2 => initial(e1) initial(e2),

e1, e2 : Element, r : Relation :- make_equivalent(e1, e2, r)

r † [e | r(e2) | e : Element • r(e) = r(e1)] pre {e1, e2} dom r,

e1, e2 : Element, r : Relation • are_equivalent(e1, e2, r)

r(e1) = r(e2) pre {e1, e2} dom r

end

Page 85: 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

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

Ejercicios