RSL - PowerPoint PPT Presentation

1 / 74
About This Presentation
Title:

RSL

Description:

Bool Bool representa los productos (true, true), (true, false), (false, true) ... cual f puede fallar en retornar un valor (es decir, es no terminante), o el ... – PowerPoint PPT presentation

Number of Views:88
Avg rating:3.0/5.0
Slides: 75
Provided by: us5
Category:
Tags: rsl | fallar

less

Transcript and Presenter's Notes

Title: RSL


1
RSL
  • Raise
  • Specification
  • Language

2
Producto Cartesiano
3
Producto Cartesiano
  • La expresión de tipo Producto Cartesiano
  • tipo1 ? ... ? tipon n?2
  • representa el tipo conteniendo los productos (v1,
    ..., vn)
  • donde vi es un valor de tipo tipoi

4
Producto, ejemplos
  • Bool ? Bool representa los productos
  • (true, true), (true, false), (false, true),
    (false, false)
  • (Nat ? Nat) ? Bool representa los productos
  • ((0, 0), true), ((0, 0), false), ((0, 1), true),
    ((0, 1), false), ...
  • Nat ? Nat ? Bool representa los productos
  • (0, 0, true), (0, 0, false), (0, 1, true), (0, 1,
    false), ...

5
Ejemplo Un sistema de Coordenadas (1)
  • Un sistema de coordenadas provee un conjunto de
    posiciones (x, y) donde x e y son números reales.
  • El centro del sistema de coordenadas es (0.0,
    0.0) y es referenciado como el origen.
  • La distancia entre dos posiciones es obtenida por
    el teorema de Pitágoras.

6
Ejemplo Un sistema de Coordenadas (2)
7
Ejemplo Un sistema de Coordenadas (3)
8
Expresiones Let (1)
  • Usadas especialmente en dos formas
  • 1. Para destruir un producto, p.e.
  • let (x, y) (1, 2) in x y end
  • que evaluará a 3.
  • Primero se evalúa la expresión que sigue al .
  • Luego se asocia x a la primera parte e y a la
    segunda.
  • Finalmente se evalúa la expresión que sigue a in.

9
Expresiones Let (2)
  • 2. Para organizar una evaluación en varios pasos.
  • Por ejemplo una función que suma una lista de
    enteros puede ser
  • value
  • sum Int ? Int
  • sum(s) ? if s lt gt then 0
  • else
  • let h hd s, t tl s, x sum(t)
  • in h x end
  • end

10
Funciones
11
Funciones
  • Una función es una transformación de valores de
    un tipo a valores de otro tipo.
  • Pueden ser
  • Totales
  • Parciales

12
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

13
Funciones totales Ejemplos
  • value
  • check Person ? Database ? Bool
  • check(p, db) ? p ? db
  • value
  • distance Position ? Position ? Real
  • distance ((x1, y1), (x2, y2)) ?
  • ((x2 - x1)?2.0 (y2 - y1) ? 2.0) ? 0.5

14
Funciones parciales
  • 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 puede fallar en retornar un
    valor (es decir, es no terminante), o el
    resultado es no determinístico.
  • La denotamos en RSL
  • f T1 T2

15
Funciones parciales
  • La expresión de tipo
  • T1 T2
  • representa el tipo conteniendo todas las
    funciones parciales así como las totales.

16
Funciones parciales
  • Muchas funciones parciales son potencialmente
    totales porque son parciales como resultado de
    una sub-especificación.
  • value func_parcial Real Real
  • axiom ?x Real x ? 0.0 ? (func_parcial(x) ?
    1.0 / x)

17
Funciones parciales
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.

18
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

19
Definición de funciones
  • Elegir 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.

20
Estilo de definición de funciones explícito
  • Si es posible establecer una fórmula.
  • f(x) ? exprx
  • Ejemplo
  • value
  • f Int ? Int
  • f(x) ? x 1

21
Estilo de definición de funciones implícito
  • Si es posible establecer una relación entre los
    datos de entrada y los de salida
  • px, r
  • Ejemplo
  • value
  • f Int ? Int
  • f(x) as r post r gt x

22
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) gt x ? x Int
    f(x) ? x 1

23
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_______________
  • factorial Int Int
  • axiom
  • ?? xInt x ? 0 ?
  • (factorial(x) ? if x 0 then 1 else x ?
    factorial(x 1) end)
  • __________________y también a________________
  • factorial Int Int
  • axiom
  • ?? xInt factorial(x) ? if x 0 then 1 else x
    ? factorial(x 1) end
  • pre x ? 0

24
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

25
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

26
Definiciones algebraicas de funcionesEjemplo 1
Una lista
  • 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.

27
  • 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

28
Ejemplo 2 Una Base de Datos Requisitos (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

29
Ejemplo Una Base de Datos Requisitos (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.

30
  • 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

31
Técnica para identificar axiomas
  • Identificar los constructores del tipo de
    interés.
  • Definir las restantes funciones en términos de
    los constructores.

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

33
  • 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,

34
  • 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
  • ? k, k1 Key, d1 Data, db Database
  • lookup(k, insert(k1, d1, db)) ?
  • if k k1 then d1 else lookup(k,
    db) end
  • pre defined(k, db)
  • end

35
Conjuntos
36
Conjuntos
  • Un conjunto es una colección, no ordenada, de
    valores distintos, del mismo tipo.
  • Ejemplos
  • 1,4,8
  • Juan, Pedro, María

37
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

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

39
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

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

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

42
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

43
Conjuntos, definición implícita
  • Un conjunto puede ser definido implícitamente
  • expr1 ? typing1,..., typingn expr2
  • donde n ? 1 y expr2 es una expresión booleana.

44
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

45
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 x1
  • es igual al conjunto (0, 1), (1, 2), (2,
    3),...

46
Expresiones de conjuntos con rangos
  • expr1 .. expr2
  • donde
  • expr1 y expr2 son expresiones enteras
  • Si expr1 gt expr2 el conjunto resultante es
    vacío.

47
Expresiones de conjuntos con rangos, ejemplos
  • 3 .. 7 3, 4, 5, 6, 7
  • 3 .. 3 3
  • 3 .. 2

48
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

49
Operadores de conjuntosUnión
  • ? T-infset ? T-infset ? T-infset
  • Ejemplo
  • 1, 2, 3 ? 2, 3, 4 1, 2, 3, 4

50
Operadores de conjuntosIntersección
  • ? T-infset ? T-infset ? T-infset
  • Ejemplo
  • 1, 2, 3 ? 2, 3, 4 2, 3

51
Operadores de conjuntosUnió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

52
Operadores de conjuntos Diferencia de conjuntos
  • s1 \ s2 T-infset ? T-infset ? T-infset
  • s1 \ s2 ? e ? e T e ?s1 ? e ?s2

53
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

54
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

55
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

56
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

57
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

58
Ejemplo Una Base de datos
  • Consideremos los requisitos para la base de datos
    del ejemplo anterior.

59
Ejemplo Una Base de Datos (1)
  • Requisitos
  • 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

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

61
  • 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

62
  • 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,

63
  • 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
  • ? k, k1 Key, d1 Data, db Database
  • lookup(k, insert(k1, d1, db)) ?
  • if k k1 then d1 else lookup(k,
    db) end
  • pre defined(k, db)
  • end

64
(No Transcript)
65
(No Transcript)
66
(No Transcript)
67
Un paso de desarrollo
68
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.

69
Relación de Refinamiento, condiciones
  • Todas las propiedades de A0 son válidas en A1.
  • axiomas, defs. de funciones, constantes,
    restricciones en subtipos.
  • No puede ser chequeada estáticamente, necesita
    demostración.

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

71
Condiciones de Refinamiento
72
Condiciones de Refinamiento (cont.)
73
Condiciones de Refinamiento (cont.)
74
Verificación de una cond. de refinamiento
Write a Comment
User Comments (0)
About PowerShow.com