Aristides Dasso, Ana Funes {arisdas, Universidad Nacional de San Luis

Slides:



Advertisements
Presentaciones similares
ASIGNATURA: MATEMÁTICA
Advertisements

Álgebra 2010 Clase N° 2 Conjuntos numéricos II
Conocimiento, Uso y Evaluación de Medicamentos Genéricos
Los números del 0 al cero uno dos tres cuatro cinco 6 7 8
Noviembre 2007Estudio Rostros de Noticias 2007Collect-GfKWikén Estudio Rostros de Noticias de la TV Chilena Desarrollados para Revista Wikén El Mercurio.
INTELIGENCIA ARTIFICIAL
Universidad San Martín de Porres
RELACIÓN POSTULADOS POR SEXO
1 LA UTILIZACION DE LAS TIC EN LAS MICROEMPRESAS GALLEGAS. AÑO mayo 2005.
1 LA UTILIZACION DE LAS TIC EN LAS PYMES GALLEGAS AÑO de Junio de 2005.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS ( Resumen PYMES ) Noviembre de 2004.
AYUDA A LA FUNCIÓN DOCENTE Internet
TEMA 5.- 1ª PARTE. EL A.O. Y SUS APLICACIONES
TEMA 2 MÚLTIPLOS Y DIVISORES
02- Plan Organización Docente v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
02- PLAN DOCENTE Febrero 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
01- OFERTA FORMATIVA v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
Aladdín-respuestas 1.Vivía 2.Era 3.Amaba 4.Quería 5.Gustaban 6.Se sentía 7.Salía 8.Tenía 9.Decidió 10.escapó 11. Se vistió 12. Conoció 13. Vio 14. Pensó
Respuestas Buscando a Nemo.
Álgebra 2010 Clase N° 1 Conjuntos numéricos I
Objetivo: Los estudiantes van a usar vocabulario del desayuno para comprender un cuento. Práctica: 1. ¿Te gusta comer? 2. ¿Te gusta beber Mt. Dew.
Mulán /75 puntos. 1.Querían 2.Gustaban 3.Escuchó 4.Dijo 5.Tenía 6.Ayudaron 7.Maquillaron 8.Arreglaron 9.Dio 10.Estaba 11.Iba 12.Quería 13.Salió 14.Gritó
Answers to – “Repaso para examen”
Estructura Económica de México Prof. Abelardo Mariña Flores trimestre 2010-P.
William Shakespeare ( greg.), fue un dramaturgo, poeta y actor inglés. Conocido en ocasiones como el Bardo de Avon (o.
DEPARTAMENTO ADMINISTRATIVO NACIONAL DE ESTADISTICA5 Libertad y Orden DEPARTAMENTO ADMINISTRATIVO NACIONAL DE ESTADISTICA CENSO GENERAL 2005 REPÚBLICA.
Grupo de Sequía del Servicio Meteorológico Nacional
UPC Tema: ESPACIO VECTORIAL Rn
TELEFONÍA IP.
Parte 3. Descripción del código de una función 1.
Vocabulario querer comerlo -paja por supuesto - madera
Sistemas de Ecuaciones
de Joaquín Díaz Garcés (Angel Pino)
TEORÍA DE CONJUNTOS.
UNIDAD 2: FUNCIONES.
FUNCIONES DE UNA VARIABLE REAL
Repaso de matrices DAGOBERTO SALGADO HORTA.
EL OSO APRENDIZ Y SUS AMIGOS
1 PROYECTO DE PRESUPUESTO DE EGRESOS DE LA FEDERACION 2002 COORDINACIÓN DE POLITICA ECONOMICA GP-PRD.
Hacer click Hacer click en cualquiera de estos links.
Indicadores CNEP Escuela
Profr. Ricardo A. Castro Rico
Ecuaciones Cuadráticas
La elección óptima del consumidor
¡Primero mira fijo a la bruja!
Fundamentos de Lógica Difusa (Fuzzy)
ANÁLISIS DE RADIOGRAFÍA PANORAMICA
Introducción a las Señales Aleatorias ISAL
¿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.
MINIMO COMÚN MÚLTIPLO DE DOS NÚMEROS a y b
Un ejemplo de agrupación de datos Problema 1 del capítulo 2 del libro de texto.
Quetzalpapalotl Quetzalpapalotl – Gevederde Slang, vlindergod.
0 1 ¿Qué hora es? By: Craig Tillmann Revised by: Malinda Seger Coppell High School Coppell, TX.
REGLAS DE LOS SIGNOS.
Learning Zone Matemáticas 101
By: Nicholas, Rayna, Nathaniel, Calvin
Los números. Del 0 al 100.
1. 3 ATENCIÓN ELOGIO EXTINCIÓN ¿POR QUÉ SE MANTIENE LA CONDUCTA? Análisis de: 9.
Vocabulario: (Los números)
Vocabulario: Para Empezar (Numbers & Colors)
uno cero dos seis siete nueve Los Números DIEZ cinco ocho tres
Los Numeros.
SUCESIONES Y PROGRESIONES.
Señales y sistemas de tiempo discreto
FACULTAD DE DERECHO PROTAGONISTAS PROMOCIÓN aniversario
Diagrama CAUSA_EFECTO ó ISHIKAWA ó ESPINA DE PESCADO
Estructuras de control
1 8 de febrero del Chapter 5 Encoding 3 Figure 5-1 Different Conversion Schemes.
Herramienta FRAX Expositor: Boris Inturias.
Métodos Formales y Análisis de Herramientas para la Producción de Software Aristides Dasso, Ana Funes {arisdas, Universidad Nacional.
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, afunes}@unsl.edu.ar Universidad Nacional de San Luis 2006

Aspectos Sintácticos de RSL A. Dasso, A. Funes Métodos Formales ...

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

Funciones Una función es una transformación de valores de un tipo a valores de otro tipo. Pueden ser: Totales Parciales A. Dasso, A. Funes Métodos Formales ...

Funciones Totales Una función f, que transforma valores de un tipo T1 en un tipo T2 es total si para todo valor en T1 devuelve un único valor en T2. La denotamos en RSL: f: T1  T2 y satisface la propiedad: x: T1  ! y: T2  f(x)  y A. Dasso, A. Funes Métodos Formales ...

Funciones Totales Ejemplos value check: Person  Database  Bool check(p, db)  p  db distance: Position  Position  Real distance ((x1, y1), (x2, y2))  ((x2 - x1)2.0 + (y2 - y1)  2.0)  0.5 A. Dasso, A. Funes Métodos Formales ...

Funciones Parciales (1) Una función f, que transforma valores de un tipo T1 en un tipo T2 es parcial si existe un valor en T1 para el cual f no puede retornar un valor (es decir, es no terminante), o el resultado es no determinísitico. La denotamos en RSL f: T1 T2 A. Dasso, A. Funes Métodos Formales ...

Funciones Parciales (2) Las funciones parciales son usualmente definidas con precondiciones, p.e.: factorial: Int Int factorial(x)  if x = 0 then 1 else x  factorial(x – 1) end pre x  0 Esto dice que cuando la precondición es true, la aplicación de la función es equivalente a la expresión que la define. La precondición nos dice que usemos factorial sólo cuando x  0. No nos dice qué sucede en otro caso. A. Dasso, A. Funes Métodos Formales ...

Funciones Parciales, ejemplos factorial: Int Int factorial(x)  if x = 0 then 1 else x  factorial(x – 1) end pre x  0 ________________es equivalente a:_______________ axiom  x:Int • x  0  (factorial(x)  if x = 0 then 1 else x  factorial(x – 1) end) __________________y también a:________________  x:Int •factorial(x)  if x = 0 then 1 else x  factorial(x – 1) end A. Dasso, A. Funes Métodos Formales ...

Expresiones de Aplicación de Funciones Ejemplos: factorial(10) sqrt(4) Forma típica: expr_función(expr1, ..., exprn) Condiciones de contexto: expr1, ..., exprn debe ser del tipo argumento de expr_función A. Dasso, A. Funes Métodos Formales ...

Definición de funciones Elegir el nombre Decidir signatura: tipo argumento Ta tipo resultado Tr Total () o Parcial ( ) total: si podemos definirla para todos los valores en Ta parcial: si se necesita una precondición. Decidir el estilo A. Dasso, A. Funes Métodos Formales ...

Estilo de definición de funciones: explícito Si es posible establecer una fórmula. f(x)  expr[x] Ejemplo: value f: Int  Int f(x)  x + 1 A. Dasso, A. Funes Métodos Formales ...

Estilo de definición de funciones: implícito Si es posible establecer una relación entre los datos de entrada y los de salida: p[x, r] Ejemplo value f: Int  Int f(x) as r post r > x A. Dasso, A. Funes Métodos Formales ...

Estilo de definición de funciones: axiomático Siempre es posible Típicamente usado en conexión con los sorts. Signatura + axioma(s) value value f: Int  Int f: Int  Int axiom axiom  x: Int • f(x) > x  x: Int • f(x)  x + 1 A. Dasso, A. Funes Métodos Formales ...

Composición de Funciones º : (T2 T3)  (T1 T2)  (T1 T3) (f º g) (x) = f(g(x)) scheme PRB = class value f : Int  Nat f(x)  x  2, g : Int  Int g(x)  2 * x , h : Int  Nat h(x) (f º g)(x) end A. Dasso, A. Funes Métodos Formales ...

Composición de Funciones scheme PRB = class value f : Int  Nat f(x)  x  2, g : Int  Int g(x)  2 * x, h : ((Int  Nat)  (Int  Int)  Int)  Nat) h(x, y, z)  (x ºy) (z), uso_h: Int  Nat uso_h(x)  h(f, g, x) end A. Dasso, A. Funes Métodos Formales ...

Definiciones algebraicas de Funciones Ejemplo 1: Una lista de enteros Una lista es una secuencia ordenada de elementos. Se puede construir una nueva lista agregando un elemento a una lista dada. Se puede recuperar la cabeza de la lista (head) que corresponde al último elemento agregado, así como recuperar su cola (tail) que corresponde al resto de la lista, sin la cabeza. A. Dasso, A. Funes Métodos Formales ...

i : Int, l : List • tail(add(i, l))  l, scheme LIST = class type List value empty : List, add : Int  List  List, tail : List List, head : List Int axiom i : Int, l : List • tail(add(i, l))  l,  i : Int, l : List • head(add(i, l))  i end A. Dasso, A. Funes Métodos Formales ...

Ejemplo 2: Una Base de Datos Requerimientos (1) La base de datos asocia claves únicas con los datos. Es decir, una clave se encuentra asociada con a lo sumo un elemento de datos en la base de datos. Además, la base de datos deberá proveer las siguientes funciones: A. Dasso, A. Funes Métodos Formales ...

Ejemplo: Una Base de Datos Requerimientos (2) insert asocia una clave con un dato en la base de datos. Si la clave ya se encuentra asociada a otro elemento de datos, la nueva asociación borra la anterior. remove remueve una asociación entre una clave y un dato. defined verifica si una clave está asociada a algún dato. lookup retorna el dato asociado con una clave particular. A. Dasso, A. Funes Métodos Formales ...

insert : Key  Data  Database  Database, scheme DATABASE = class type Database, Key, Data value empty : Database, insert : Key  Data  Database  Database, remove : Key  Database  Database, defined : Key  Database  Bool, lookup : Key  Database Data A. Dasso, A. Funes Métodos Formales ...

Técnica para identificar axiomas Identificar los constructores del tipo de interés. Definir las restantes funciones en términos de los constructores. A. Dasso, A. Funes Métodos Formales ...

Técnica para identificar axiomas, aplicado al ejemplo de la base de datos Los constructores son la constante empty y la función insert. Cualquier base de datos puede ser representada por una expresión de la forma: insert(k1, d1, insert(k2, d2, ... insert(kn, dn, empty)...)) remove, defined y lookup definidos en términos de los constructores empty e insert. A. Dasso, A. Funes Métodos Formales ...

axiom [remove_empty]  k : Key • remove(k, empty)  empty, [remove_insert]  k, k1 : Key, d1 : Data, db : Database • remove(k, insert(k1, d1, db))  if k = k1 then remove(k, db) else insert(k1, d1, remove(k, db)) end, A. Dasso, A. Funes Métodos Formales ...

 k : Key • defined(k, empty)  false, [defined_insert] [defined_empty]  k : Key • defined(k, empty)  false, [defined_insert]  k, k1 : Key, d1 : Data, db : Database • defined(k, insert(k1, d1, db))  k = k1  defined(k, db), [lookup_insert] lookup(k, insert(k1, d1, db))  if k = k1 then d1 else lookup(k, db) end pre defined(k, db) end A. Dasso, A. Funes Métodos Formales ...

Ejemplo 3: Los axiomas de Peano para los números Naturales Informalmente, los axiomas de Peano pueden ser establecidos como sigue: 0 es un número natural. Todos número natural a tiene un sucesor. Ningún número natural tiene a 0 como su sucesor. Distintos números naturales tienen distintos sucesores. Si una propiedad se mantiene para 0, y se mantiene para el sucesor de todo número natural para el cual también se mantiene, entonces la propiedad se mantiene para todos los números naturales. A. Dasso, A. Funes Métodos Formales ...

[cero_es_el_primero]  n : N • ~ (succ(n)  zero), [orden_lineal] scheme PEANO = class type N value zero : N, succ : N  N axiom [cero_es_el_primero]  n : N • ~ (succ(n)  zero), [orden_lineal]  n1, n2 : N • (succ(n1)  succ(n2))  (n1  n2), [inducción]  p : N  Bool • (p(zero)  ( n : N • p(n) => p(succ(n)))) => ( n : N • p(n)) end A. Dasso, A. Funes Métodos Formales ...

Ejemplo 3: Los axiomas de Peano para los números Naturales (cont.) Queremos ahora extender los axiomas de Peano con las operaciones de suma y multiplicación. A. Dasso, A. Funes Métodos Formales ...

scheme NATURAL_NUMBERS = extend PEANO with class value plus : N  N  N, mult : N  N  N axiom [plus_zero]  n : N • plus(n, zero)  n, [plus_succ]  n1, n2 : N • plus(n1, succ(n2))  succ(plus(n1, n2)), [mult_zero]  n : N • mult(n, zero)  zero, [mult_insert] mult(n1, succ(n2))  plus(mult(n1, n2), n1) end A. Dasso, A. Funes Métodos Formales ...

La conmutatividad y asociatividad pueden probarse a partir de los axiomas anteriores. Usando la técnica explicada, toda expresión que involucre un no-constructor puede demostrarse que es equivalente a una expresión que sólo use constructores. Pedimos además que los axiomas sobre los no-constructores “hagan algún progreso” para lo cual necesitamos una de dos condiciones: El lado derecho no involucre un no-constructor. El lado derecho aplica no-constructores sólo a términos con menor cantidad de constructores. A. Dasso, A. Funes Métodos Formales ...

Funciones, ejercicios (1) 1. Suggest types for the operators (a) + (addition) (b) * (multiplication) (c) \ (remainder) (d)  (exponentiation) Remember that they may have both integer and real versions. A. Dasso, A. Funes Métodos Formales ...

Funciones, ejercicios (2) 2. Define a function, ‘max’, that returns the maximum of two integers in each of the following styles: (a) explicit function (b) implicit function (c) signature/axiom A. Dasso, A. Funes Métodos Formales ...

Funciones, ejercicios (3) 3. Define a function, ‘approx_sqrt’, that for a given tolerance (positive real number) finds an approximation to the square root of non-negative real numbers. The approximation, approx_sqrt(x,eps), must be such that the mathematical square root, square_root(x), lies in the half open interval [approx_sqrt(x,eps),approx_sqrt(x,eps) + eps) A. Dasso, A. Funes Métodos Formales ...

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

{“Juan”, “Pedro”, “María”} Conjuntos Un conjunto es una colección, no ordenada, de valores distintos, del mismo tipo. Ejemplos: {1,4,8} {} {“Juan”, “Pedro”, “María”} A. Dasso, A. Funes Métodos Formales ...

Expresión de tipo conjunto La expresión de tipo expr_de_tipo-set representa el tipo que contiene todos los conjuntos finitos de elementos de tipo expr_de_tipo A. Dasso, A. Funes Métodos Formales ...

Conjuntos, ejemplos Bool-set representa todos los conjuntos finitos de Bool. Es decir: {}, {true}, {false}, {true, false} Nat-set representa todos los subconjuntos finitos del conjunto de los naturales. Es decir: {}, {0}, {1}, ...,{0,1},...,{1,2},... A. Dasso, A. Funes Métodos Formales ...

Conjuntos infinitos La expresión de tipo expr_de_tipo-infset representa el tipo que contiene todos los conjuntos finitos así como los infinitos de elementos de tipo expr_de_tipo A. Dasso, A. Funes Métodos Formales ...

Conjuntos infinitos, ejemplos Bool-infset representa los mismos conjuntos que Bool-set. Nat-infset contiene no sólo los conjuntos finitos sino también los infinitos: {}, {0}, {1}, ...,{0,1},...,{1,2},... {0,1,2,3...}, {1,2,3...}, {1,3,5,7,9,...},... A. Dasso, A. Funes Métodos Formales ...

Conjuntos, propiedades No existe un orden de sus elementos, p.e.: {1,2,3} = {3,2,1} No contiene valores repetidos: {1,2,3,3} = {1,2,3} Para cualquier tipo T, T-set es un subtipo de T-infset. A. Dasso, A. Funes Métodos Formales ...

Conjuntos definición explícita Un conjunto puede ser definido explícitamente: {expr1,...,exprn} donde expri tienen un tipo maximal común y n  0. Ejemplo : {1, 2, 3} {} {“Juan”, “Pedro”} A. Dasso, A. Funes Métodos Formales ...

Conjuntos, definición implícita Un conjunto puede ser definido implícitamente: {expr1  typing1,..., typingn • expr2} donde n  1 y expr2 es booleana. A. Dasso, A. Funes Métodos Formales ...

Conjuntos, definición implícita, ejemplo {2n n: Nat • n  3 } Se lee “el conjunto de valores 2n donde n es un número natural tal que n es menor o igual a tres”. Es decir que es igual a {0, 2, 4, 6} A. Dasso, A. Funes Métodos Formales ...

Conjuntos, ejemplos {n n: Nat • es_primo(n)} donde es_primo: Nat  Bool Es igual al conjunto {2, 3, 5, 7, ...} {(x, y)x, y: Nat • y = x+1} es igual al conjunto {(0, 1), (1, 2), (2, 3),...} A. Dasso, A. Funes Métodos Formales ...

Expresiones de conjuntos con rangos {expr1 .. expr2 } donde expr1 y expr2 son expresiones enteras Si expr1 > expr2 el conjunto resultante es vacío. A. Dasso, A. Funes Métodos Formales ...

Expresiones de conjuntos con rangos, ejemplos {3 .. 7} = {3, 4, 5, 6, 7} {3 .. 3} = {3} {3 .. 2} = {} A. Dasso, A. Funes Métodos Formales ...

Operadores de conjuntos Pertenencia : T  T-infset  Bool : T  T-infset  Bool e  s es true sii e es un elemento de s. e  s = (e  s) Ejemplos: 1  {1, 2} = true 1  {1, 2} = false 2  {n | n: Nat • true} = true A. Dasso, A. Funes Métodos Formales ...

Operadores de conjuntos: Unión : T-infset  T-infset  T-infset Ejemplo: {1, 2, 3}  {2, 3, 4} = {1, 2, 3, 4} A. Dasso, A. Funes Métodos Formales ...

Operadores de conjuntos: Intersección : T-infset  T-infset  T-infset Ejemplo: {1, 2, 3}  {2, 3, 4} = {2, 3} A. Dasso, A. Funes Métodos Formales ...

Operadores de conjuntos: Unión e Intersección Unión e intersección pueden ser definidos en términos de pertenencia: s1  s2  {e  e: T • es1  es2} s1  s2  {e  e: T • es1  es2} A. Dasso, A. Funes Métodos Formales ...

Operadores de conjuntos: Diferencia de conjuntos s1 \ s2 : T-infset  T-infset  T-infset s1 \ s2  {e  e: T • e s1  e s2} A. Dasso, A. Funes Métodos Formales ...

Operadores de conjuntos: Diferencia de conjuntos Ejemplos {1, 3, 4} \ {3, 4} = {1} {1, 3, 4} \ {2} = {1, 3, 4} {1, 3, 4} \ {n n: Nat • es_primo(n)} = {1, 4} A. Dasso, A. Funes Métodos Formales ...

Operadores de conjuntos: Subconjunto : T-infset  T-infset  Bool s1  s2   e: T • e s1  e s2 Operador reverso: : T-infset  T-infset  Bool s1  s2   e: T • e s2  e s1 A. Dasso, A. Funes Métodos Formales ...

Operadores de conjuntos: Subconjunto propio : T-infset  T-infset  Bool s1  s2  s1  s2  s1  s2 Operador reverso : T-infset  T-infset  Bool s1  s2  s1  s2  s1  s2 A. Dasso, A. Funes Métodos Formales ...

Operadores de conjuntos: Subconjunto, ejemplos {1, 2, 3}  {1, 2, 3} = true {1, 2}  {1, 2, 3} = true {1, 2, 3}  {1, 2, 3} = false {1, 4}  {1, 2, 3} = false A. Dasso, A. Funes Métodos Formales ...

Operadores de conjuntos: Cardinalidad Retorna la cardinalidad de un conjunto finito. La aplicación a un conjunto infinito retorna chaos. card: T-infset Nat Ejemplos: card {} = 0 card {1, 15, 23} = 3 card {n | n: Nat}  chaos A. Dasso, A. Funes Métodos Formales ...

Conjuntos, ejercicios 1. Write value expressions representing the set of odd numbers between 0 and 10, as an enumerated set and as a comprehended set. 2. Do the following identities hold for sets A, B and C? (a) (A  B) \ C = (A \ C)  (B \ C) (b) (A  C) \ B = (A  B) \ C 3. Define a function, ‘dunion’, that takes a set, ss, of sets of elements as argument and returns the set of all those elements which are elements of some set in ss. Example: dunion({ {1,2}, {7,1}, {5} }) = {1,2,7,5} A. Dasso, A. Funes Métodos Formales ...

Ejemplo: Un administrador de recursos Un número de recursos deben ser compartidos entre un número de usuarios. Un administrador de recursos controla los recursos manteniendo un pool (conjunto) de recursos libres. Cuando un usuario quiere un recurso, el administrador obtiene uno cualquiera del pool. Cuando el usuario no lo necesita más, el administrador lo libera devolviéndolo al pool. A. Dasso, A. Funes Métodos Formales ...

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

Ejemplo: Una Base de datos Consideremos los requerimientos para la base de datos del ejemplo anterior. A. Dasso, A. Funes Métodos Formales ...

Ejemplo: Una Base de Datos (1) Requerimientos: La base de datos asocia claves únicas con los datos. Es decir, una clave se encuentra asociada con a lo sumo un elemento de datos en la base de datos. Además, la base de datos deberá proveer las siguientes funciones: A. Dasso, A. Funes Métodos Formales ...

Ejemplo: Una Base de Datos (2) insert asocia una clave con un dato en la base de datos. Si la clave ya se encuentra asociada a otro elemento de datos, la nueva asociación borra la anterior. remove remueve una asociación entre una clave y un dato. defined verifica si una clave está asociada a algún dato. lookup retorna el dato asociado con una clave particular. A. Dasso, A. Funes Métodos Formales ...

insert : Key  Data  Database  Database, scheme DATABASE = class type Database, Key, Data value empty : Database, insert : Key  Data  Database  Database, remove : Key  Database  Database, defined : Key  Database  Bool, lookup : Key  Database Data A. Dasso, A. Funes Métodos Formales ...

axiom [remove_empty]  k : Key • remove(k, empty)  empty, [remove_insert]  k, k1 : Key, d1 : Data, db : Database • remove(k, insert(k1, d1, db))  if k = k1 then remove(k, db) else insert(k1, d1, remove(k, db)) end, A. Dasso, A. Funes Métodos Formales ...

 k : Key • defined(k, empty)  false, [defined_insert] [defined_empty]  k : Key • defined(k, empty)  false, [defined_insert]  k, k1 : Key, d1 : Data, db : Database • defined(k, insert(k1, d1, db))  k = k1  defined(k, db), [lookup_insert] lookup(k, insert(k1, d1, db))  if k = k1 then d1 else lookup(k, db) end pre defined(k, db) end A. Dasso, A. Funes Métodos Formales ...

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

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

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

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

Relación de Refinamiento, condiciones El nuevo modelo (A1) debe incluir TODAS las entidades del viejo (A0 ) types, values, objects, variables y channels con los mismos nombres y tipos maximales. A1 puede tener más entidades que A0. Implementación estática, garantiza monotonicidad. Puede ser chequeada estáticamente. Para satisfacer la relación de refinamiento, dos propiedades deben ser satisfechas: la propiedad de implementación estática y la preservación de propiedades. La primera pide que la signatura de A1 debe incluir a la signatura de A0. Es decir, A1 debe contener todas las entidades (tipos, values, variables, channels, y objects) con los mismos nombres y los mismos tipos maximales, o para los objetos con clases que estén en la misma relación de implementación. La relación es de inclusión ya que A1 puede tener más entidades que A0. Esta condición puede ser chequeada estáticamente, y las herramientas de RAISE lo hacen como parte del type checking. A. Dasso, A. Funes Métodos Formales ...

Relación de Refinamiento, condiciones Todas las propiedades de A0 se mantienen en A1. axiomas, defs. de funciones, constantes, restricciones en subtipos. No puede ser chequeada estáticamente, necesita demostración. La segunda condición pide que todas las propiedades de A0 deben ser válidas en A1. Las propiedades pueden ser expresadas por medio de axiomas, pero también incluye las definiciones de funciones y constantes, los valores iniciales de variables, y las restricciones en los subtipos. Esta condición no puede ser chequeada estáticamente, y en general requiere de una demostración para su verificación. Pero recordemos que la “R” de RAISE es por Riguroso: el método permite que las condiciones sean chequeadas informalmente, a mano. La cantidad de pruebas que hagamos dependerá de cuán crítico sea el sistema y de cuanto presupuesto tengamos. Las pruebas son costosas porque requieren mucho tiempo y gente entrenada y con experiencia. Lamentablemente el tipo de pruebas que surgen en el desarrollo de software son las que exceden la capacidad de los probadores automáticos. A. Dasso, A. Funes Métodos Formales ...

SET_DATABASE implementa a DATABASE SET_DATABASE define todos los tipos que define DATABASE, el único cambio es que el sort Database ha sido reemplazado por una definición concreta. SET_DATABASE define, con las misma signaturas, todas las constantes y funciones que son definidas por DATABASE. Todos los axiomas de DATABASE son verdaderos en SET_DATABASE. A. Dasso, A. Funes Métodos Formales ...

Condiciones de Refinamiento A. Dasso, A. Funes Métodos Formales ...

Condiciones de Refinamiento (cont.) A. Dasso, A. Funes Métodos Formales ...

Condiciones de Refinamiento (cont.) A. Dasso, A. Funes Métodos Formales ...

Verificación de una cond. de refinamiento A. Dasso, A. Funes Métodos Formales ...

Ejemplo: Relaciones de Equivalencia Un conjunto que consiste de conjuntos disjuntos de elementos define una relación de equivalencia. Llamamos a los conjuntos miembros “clases de equivalencia”. Todos los miembros de una clase son considerados equivalentes. A. Dasso, A. Funes Métodos Formales ...

Una relación de equivalencia debe cumplir con 3 condiciones para ser bien formada: No debe contener la clase vacía. Cada elemento se encuentra representado en alguna clase. La intersección de las clases de equivalencia es vacía. La función make_equivalent es requerida para hacer dos elementos equivalentes, juntando las clases de equivalencias de los elementos en una. La función are-equivalent controla si dos elementos son equivalentes, es decir, si pertenecen a la misma clase de equivalencia. A. Dasso, A. Funes Métodos Formales ...

scheme EQUIVALENCE_RELATION = class type Relation = Class-infset, Class = Element-infset, Element value well_formed : Relation  Bool, initial : Relation, make_equivalent : Element  Element  Relation  Relation, are_equivalent : Element  Element  Relation  Bool A. Dasso, A. Funes Métodos Formales ...

 r : Relation • well_formed(r)  {}  r  axiom  r : Relation • well_formed(r)  {}  r  ( e : Element •  c : Class • e  c  c  r)  ( c1, c2 : Class • c1  c2  c1  c2 = {}), initial  {{e} | e : Element}, A. Dasso, A. Funes Métodos Formales ...

 e1, e2 : Element, r : Relation • make_equivalent(e1, e2, r)  (r \ {c | c : Class • c  r  (e1  c  e2  c)})  {c1 union c2 | c1, c2 : Class • c1  r  c2  r  e1  c1  e2  c2}, e1, e2 : Element, r : Relation • are_equivalent(e1, e2, r)  ( c : Class • c  r  e1  c  e2  c) end A. Dasso, A. Funes Métodos Formales ...