métodos formales y análisis de herramientas para la producción de software aristides dasso, ana...
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/38.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/39.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/40.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/41.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/42.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/43.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/44.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/45.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/46.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/47.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/48.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/49.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/50.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/51.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/52.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/53.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/54.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/55.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/56.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/57.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/58.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/59.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/60.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/61.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/62.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/63.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/64.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/65.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/66.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/67.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/68.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/69.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/70.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/71.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/72.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/73.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/74.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/75.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/76.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/77.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/78.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/79.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/80.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/81.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/82.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/83.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/84.jpg)
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](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b49f1a28abb57c92bec6/html5/thumbnails/85.jpg)
A. Dasso, A. Funes Métodos Formales ... 85
Ejercicios