Métodos Formales y Análisis de Herramientas para la Producción de Software Aristides Dasso, Ana Funes {arisdas, Universidad Nacional.

Slides:



Advertisements
Presentaciones similares
Seminario: Expresividad semántica y lógica de segundo orden
Advertisements

Compiladores e intérpretes Análisis Sintáctico II
Repaso de Conjuntos Conjuntos y subconjuntos
funciones Por: Carlos Alberto García Acosta
ESTRUCTURAS LINEALES UNIDAD 3.
Tema 5: Excel Base de Datos (II). Función DESREF y Otras
Ayudantia Programación Python #5
Especialista en Business Intelligence Integration Services SSIS (Sesión 5) Microsoft SQL Server 2008 R2 (Nov.2013) Suscribase a o.
SQL Server Integration Services SSIS
Interpretando objetos
Aristides Dasso, Ana Funes {arisdas, Universidad Nacional de San Luis
1 Parsing Un parser podría ser definido como un programa que analiza una porción de texto para determinar su estructura lógica: la fase de parsing en un.
Programación monádica
Maestría en Bioinformática Bases de Datos y Sistemas de Información Fundamentos de Matemática Ing. Alfonso Vicente, PMP
Tipo de Dato Abstracto Tipos de datos:
Informática II Prof. Dr. Gustavo Patiño MJ
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
• SQL Server Integration Services SSIS
ANALISIS SINTACTICO DESCENDENTE
Teoría de lenguajes y compiladores
Teoría de conjuntos Un conjunto es una colección o clase de objetos bien definidos y diferenciables entre sí. Los conjuntos pueden ser finitos o infinitos.
Estructuras de Datos Especificación formal de Listas.
VISUAL BASIC CONSOLA Todas las ordenes o instrucciones se digitan dentro de sub Main() y End Sub ÁREA DE TRABAJO: Las aplicaciones de consola son aquellas.
PL/SQL Francisco Moreno Universidad Nacional.
Teoría de lenguajes y compiladores
TÉCNICO EN PROGRAMACIÓN DE SOFTWARE Instructor: Ingeniero Adrián Guerrero Taborda
Tema 2 Lenguajes Formales.
Programación de sistemas
1.1 Definición y notación de conjuntos.
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Teoría de Conjuntos Prof. Carlos Coronel R..
Sesión 6 Sentencias de Repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
EXPONENTES Y RADICALES
Lenguajes Formales de Consulta
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
CONTENIDO CONJUNTOS RELACIONES FUNCIONES CONJUNTOS.
Estructura de Datos y Algoritmos
ESTRUCTURA DE DATOS EN JAVA
Tablas de Hash.
1.1 Concepto y terminología
UNITA - IBARRA TRIGGERS
ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue,
Lenguajes regulares Teoría del Autómata.
Teoría – Alejandro Gonzalez
Teoría de lenguajes y compiladores Analizadores lexicográficos
Computación I Primer Semestre 2006 Capítulo IV Ciclos y Colecciones (con un sabor a algoritmos)
Operadores lógicos en PHP Programación en Internet II.
ESCUELA TECNOLÓGICA INSTITUTO TÉCNICO CENTRAL Ing. Johanna Vargas Esp. Gerencia de proyectos.
Planteos Recursivos Resolución de Problemas y Algoritmos
Control de Flujo.
Curso de Teoría del Autómata
1 Compilación, pereza y expresiones let(rec) 2 Compilando un programa Describiremos un compilador para la máquina minimal usando un conjunto de esquemas.
Bases de Datos Sql.
Especialista en Business Intelligence Integration Services SSIS Transformaciones (Parte 3) Microsoft SQL Server 2008 R2 Suscribase a
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
Límites y continuidad Podríamos empezar diciendo que los límites son importantes en el cálculo, pero afirmar tal cosa sería infravalorar largamente su.
Mapeo de Estructuras XML a Bases de Datos Relacionales
Universidad César Vallejo
Capítulo 3: Conjuntos Autor: José Alfredo Jiménez Murillo.
Tipos de Datos.
Estructura: COLA Profesor: Ing. Erick López Ch. M.R.I.
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
L ENGUAJE DE E SPECIFICACIÓN Algoritmos y Estructuras de Datos I Especificación – Práctica 2 AEDI Especificación – Práctica 2 1.
COLEGIO VIRTUAL GERSAIN
Estructura de Datos PILA Universidad Hispanoamericana Prof. Ing. Erick López.
Base de Datos I – Ing. Mary Carlota Bernal J.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Equipo de Profesores del Curso. Funciones de Texto.
Departamento de Informática Universidad Técnica Federico Santa María Lenguajes Funcionales Francisco Bórquez Departamento de Informática Universidad Técnica.
Transcripción de la presentación:

Métodos Formales y Análisis de Herramientas para la Producción de Software Aristides Dasso, Ana Funes {arisdas, Universidad Nacional de San Luis 2006

Listas

A. Dasso, A. FunesMétodos Formales...3 Listas Una lista es una colección ordenada de valores del mismo tipo. Ejemplos:

A. Dasso, A. FunesMé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.

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

A. Dasso, A. FunesMé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.

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

A. Dasso, A. FunesMétodos Formales...8 Propiedades de las listas Pueden existir valores repetidos. Por lo tanto,  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.: . Para cualquier tipo T, T * es un subtipo de T .

A. Dasso, A. FunesMétodos Formales...9 Listas Una lista puede ser definida explícitamente enumerando sus elementos: donde expr i tienen un tipo maximal común y n  0. Ejemplos :

A. Dasso, A. FunesMétodos Formales...10 Listas Una lista puede ser definida usando una expresión de listas con rango: 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. FunesMétodos Formales...11 Listas Ejemplos: = = =

A. Dasso, A. FunesMétodos Formales...12 Listas Una lista puede ser definida implícitamente: El binding debe hacer matching con los elementos de la lista representada por expr_de_lista.

A. Dasso, A. FunesMétodos Formales...13 Listas Ejemplo 1: > se lee “la lista de valores 2  n donde n varía sobre la lista ”. es igual a la lista. notar que el ordenamiento en la lista se preserva en la nueva lista.

A. Dasso, A. FunesMétodos Formales...14 Listas Ejemplo 2: es_primo(n) > se lee “la lista de valores n donde n varía sobre la lista considerando solamente los números primos”. es igual a la lista.

A. Dasso, A. FunesMé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.

A. Dasso, A. FunesMétodos Formales...16 Listas Ejemplo 3 (cont.): value es_interesante: Key  Bool, transformacion: Data  Report_Data, report: Database  (Key  Report_Data) * report (db)  type Report_Data

A. Dasso, A. FunesMé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)

A. Dasso, A. FunesMétodos Formales...18 Indexando Listas Ejemplo: value l: Nat * = l(2) = 20 (3) = 2, >(1) =, >(1) (2) = ‘b’

A. Dasso, A. FunesMé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

A. Dasso, A. FunesMétodos Formales...20 Definición de listas infinitas 2) a partir de otra lista infinita. Ejemplo: A partir de la lista infinita de números naturales define la lista de todos los números primos.

A. Dasso, A. FunesMétodos Formales...21 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: ^ = Ejemplos: ^ =

A. Dasso, A. FunesMétodos Formales...22 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: ^ todos_los_naturales =

A. Dasso, A. FunesMétodos Formales...23 Operadores de listas Obtener cabeza de una lista hd: T  T Devuelve el primer elemento de la lista: hd = e 1 Ejemplos: hd = 1 hd todos_los_naturales = 0

A. Dasso, A. FunesMétodos Formales...24 Operadores de Listas Obtener cola de una lista tl: T  T  Devuelve la lista original sin la cabeza: tl = Ejemplos: tl = tl todos_los_naturales =

A. Dasso, A. FunesMétodos Formales...25 Operadores de Listas Obtener longitud de una lista len: T  Nat Devuelve la longitud de una lista finita. len = n Ejemplos: len = 3 len = 0 La aplicación a una lista infinita devuelve chaos. len todos_los_naturales  chaos

A. Dasso, A. FunesMé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}

A. Dasso, A. FunesMétodos Formales...27 Operadores de Listas Obtener índices de una lista Ejemplos inds = {1,2,3} inds = {} inds todos_los_naturales = {ind  ind: Nat ind  1}

A. Dasso, A. FunesMé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} elems = {} elems todos_los_naturales = {n  n: Nat }

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

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

A. Dasso, A. FunesMé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).

A. Dasso, A. FunesMétodos Formales...32

A. Dasso, A. FunesMétodos Formales...33 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. FunesMétodos Formales...34

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

A. Dasso, A. FunesMétodos Formales...36 Representaciones para la BD type Database empty insert(k2, d2, insert(k1, d1, empty)) type Database = (Key  Data)-set {} {(k1,d1), (k2, d2)} type Database = (Key  Data) *

A. Dasso, A. FunesMétodos Formales...37

A. Dasso, A. FunesMétodos Formales...38 ),

A. Dasso, A. FunesMétodos Formales...39

A. Dasso, A. FunesMé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.

A. Dasso, A. FunesMé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

A. Dasso, A. FunesMé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 <.

A. Dasso, A. FunesMé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 ^ ^ right  less_than(k1, k2)),

A. Dasso, A. FunesMé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.

A. Dasso, A. FunesMétodos Formales...45 empty : Database =, insert : Key  Data  Database  Database insert(k, d, db)  if db = then else let (k1, d1) = hd db in if k = k1 then ^ tl db elsif less_than(k, k1) then ^ db else ^ insert(k, d, tl db) end end,

A. Dasso, A. FunesMétodos Formales...46 remove : Key  Database  Database remove(k, db) , 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,

A. Dasso, A. FunesMé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

A. Dasso, A. FunesMé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

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

A. Dasso, A. FunesMétodos Formales...50 Ejercicios

A. Dasso, A. FunesMétodos Formales...51 Ejercicios

A. Dasso, A. FunesMétodos Formales...52 Ejercicios

A. Dasso, A. FunesMétodos Formales...53 Mapas

A. Dasso, A. FunesMé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.

A. Dasso, A. FunesMé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.

A. Dasso, A. FunesMé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”}

A. Dasso, A. FunesMé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}

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

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

A. Dasso, A. FunesMétodos Formales...60 Expresiones de tipo Mapa Una expresión de tipo de la forma expr_de_tipo 1 expr_de_tipo 2 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.  m ~

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

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

A. Dasso, A. FunesMétodos Formales...63 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. FunesMé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:

A. Dasso, A. FunesMé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:

A. Dasso, A. FunesMé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:

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

A. Dasso, A. FunesMétodos Formales...68 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. FunesMétodos Formales...69 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. FunesMétodos Formales...70 Operadores de Mapas Sobre-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]

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

A. Dasso, A. FunesMétodos Formales...72 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. FunesMétodos Formales...73 Operadores de Mapas Restricción por Ejemplos: [3 |  true, 5 |  false] \ {3} = [5 |  false] [3 |  true, 5 |  false] \ {5,7} = [3 |  true] [3 |  true] \ {} = [3 |  true]

A. Dasso, A. FunesMétodos Formales...74 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. FunesMétodos Formales...75 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. FunesMétodos Formales...76 Operadores de Mapas Composición la composición de dos mapas m1 y m2 se define:

A. Dasso, A. FunesMétodos Formales...77 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. FunesMétodos Formales...78 Un paso de desarrollo

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

A. Dasso, A. FunesMétodos Formales...80

A. Dasso, A. FunesMétodos Formales...81

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

A. Dasso, A. FunesMétodos Formales...83 value well_formed : Relation  Bool, initial : Relation, make_equivalent : Element  Element  Relation  Relation, are_equivalent : Element  Element  Relation  Bool

A. Dasso, A. FunesMé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

A. Dasso, A. FunesMétodos Formales...85 Ejercicios