La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ManTa Fundamentación Rodrigo Cardoso Universidad de los Andes Depto. de Ing. de Sistemas y Computación.

Presentaciones similares


Presentación del tema: "ManTa Fundamentación Rodrigo Cardoso Universidad de los Andes Depto. de Ing. de Sistemas y Computación."— Transcripción de la presentación:

1

2 ManTa Fundamentación Rodrigo Cardoso Universidad de los Andes Depto. de Ing. de Sistemas y Computación

3 ManTa: Fundamentación2 Contenido 1TADs ecuacionales 2Semántica 3Variantes de definición 4Prueba de teoremas sobre TADs 5Implantación abstracta 6Implantación concreta

4 ManTa: Fundamentación3 1 TADs ecuacionales Un Tipo Abstracto de Datos ( TAD ) es una estructura algebraica heterogénea TAD =  Signatura, Axiomas  La signatura es una declaración de operaciones o funciones y sus funcionalidades Los axiomas son predicados que condicionan las operaciones del TAD. En un TAD ecuacional, todos los axiomas son ecuaciones.

5 ManTa: Fundamentación4 TAD Cola [ X ] *vac:  Cola *ins:ColaxX  Cola esvac:Cola  bool prim:Cola  X ati:Cola  Cola Axiomas [ev1]esvac ( vac )= true [ev2]esvac ( ins ( c, x ) )= false [pr1]prim ( vac ) =  [pr2]prim ( ins ( c, x ) )= ifesvac ( c )then x else prim ( c ) fi [at1]ati ( vac ) = vac [at2]ati ( ins ( c, x ) )= ifesvac ( c )then vac else ins( ati ( c ), x ) fi DAT

6 ManTa: Fundamentación5 Notación para TADs TAD Y [ X 1, X 2, …, X n ] … *g j : A j xY p j  Y … s k : A k xY p k  Z … Axiomas … s k ( a k, y1 ) = … s k ( a k, y2 ) = … … DAT TDI Tipos primitivos generadoras selectoras A i = X i1 x X i2 x … x X ir p i  0 Z  { X 1, X 2, …, X n, Y }

7 ManTa: Fundamentación6 Clasificación de operaciones Típicamente: f : X i1 x X i2 x … x X i2 x Y m  Z F unciones G eneradoras S electoras I niciales( m = 0, Z = Y ) [ vac ] C onstructoras( m > 0, Z = Y ) [ ins ] Si mplificadoras( m  0, Z = Y ) [ ati ] A nalizadoras( m > 0, Z = X ik ) [ prim ]

8 ManTa: Fundamentación7 El lenguaje del TAD La signatura determina el lenguaje del TAD. Se definen términos y axiomas. Los términos sirven para denotar objetos. Cada término tiene un tipo asociado. Hay TADs parámetros dados (v.gr., nat, bool, …) Los axiomas establecen relaciones de igualdad entre términos del mismo tipo, i.e., entre denotaciones de objetos.

9 ManTa: Fundamentación8 Términos Un término atómico es una constante primitiva, una variable o indefinido. Una constante primitiva es un elemento de un TAD parámetro. El tipo de una constante es el TAD al que pertenece. Las variables son tomadas de un conjunto enumerable. El tipo de una variable depende del contexto en que aparezca. El término indefinido (  ) representa valores de error. El tipo {  } se considera incluido en todo TAD. Un término compuesto ( de tipo Z ) tiene la forma f ( t 1,…, t r ) donde f : A 1 x … x A r  Z es un símbolo de función t i es término de tipo A i

10 ManTa: Fundamentación9 Términos (cont.) Un término condicional ( de tipo Z ) tiene la forma if  término de tipo bool  then  término de tipo Z  else  término de tipo Z  fi Un término ( de tipo Z ) es uno atómico, compuesto o condicional, de tipo Z. Cualquier término que hace parte de otro es un subtérmino. Un término es básico si no contiene variables ni subtérminos indefinidos.

11 ManTa: Fundamentación10 Axiomas Los axiomas tienen la forma L I = L D donde: –L I es un término compuesto f ( t 1,…, t r ) que no contiene subtérminos condicionales. –L D es un término –Los tipos de L I y L D coinciden Las variables: –tienen alcance local a los axiomas –se consideran cuantificadas universalmente –su tipo es determinable unívocamente del contexto en que aparecen

12 ManTa: Fundamentación11 El tipo de interés ( TDI ) Se define el TDI: Y  términos atómicos generados por G y variables, más el elemento  (indefinido) v.gr. Cola = { , vac, ins ( vac, x1 ), ins ( vac, x2 ),..., ins ( ins ( vac, x1 ), x1 ),... }

13 ManTa: Fundamentación12 Reducción de términos Los axiomas pueden utilizarse para reescribir términos Se usan de izquierda a derecha Definen una relación de reducibilidad (. . ) Por ejemplo: ins ( ati ( vac ), x )  ins ( vac, x ) ya que ati ( vac ) = vac Notación: e 1  e 2 ssiHay un axioma aplicable a e 1 y el resultado es e 2 e 1   e 2 ssie 1 = u 1 ...  u r = e 2 ( r  0 ) e 1  e 2 ssie 1  e 2 ó e 2  e 1 e 1  e 2 ssie 1 = u 1 ...  u r = e 2 ( r  0 ) ( r - equivalencia )

14 ManTa: Fundamentación13 Semántica de un TAD Y Un término representa un objeto (real o ya entendido) e 1  e 2 :“e 2 es más simple que e 1 ” “valen ( significan ) lo mismo” e 1  e 2 :“e 1 y e 2 significan lo mismo” Se deberían preferir las expresiones simples ( reducidas ) Así: para averiguar el valor de un término, se busca reducirlo a otro equivalente más simple ojalá ya entendido

15 ManTa: Fundamentación14 Significado de los términos ees irreducible si no se puede reescribir Por ejemplo: vac,x,ins ( vac, x ) ees una forma normal de e’ si e es irreducible e’   e Elegir una forma normal como significado ( o valor ) de e e puede no tener formas normales e puede tener varias formas normales e puede tener formas normales que se desearía reducir ( ! )

16 ManTa: Fundamentación15 Cuándo es “buena” la definición de un TAD ? Dos criterios: Sintáctico:completitud suficiente Conseguible por construcción, siguiendo una metodología Semántico:distinguibilidad de objetos Dependiente de las intenciones del diseñador

17 ManTa: Fundamentación16 Completitud suficiente Y [ X 1, …, X n ] es suficientemente completo si todo término e de tipo X i reduce a un elemento x de X i, i.e., e   x Por ejemplo: e=prim ( ins ( ati ( vac ), x ) )  ifesv ( vac )thenx elseprim ( vac ) fi  iftruethenxelse…fi  x

18 ManTa: Fundamentación17 Para qué un TAD suficientemente completo ? e   x, x  X i x es una forma normal para e En un TAD suficientemente completo: Todo término de tipo primitivo evalúa a un objeto primitivo, i.e., Todo término de tipo primitivo tiene significado conocido Ejemplo: Si en TAD Cola [ X ] se omitiera el axioma ati ( vac ) = vac e=prim ( ins ( ati ( vac ), x ) )  if esv ( ati ( vac ) )thenx elseprim ( ati ( vac ) ) fi que es irreducible. No habría significado “natural”.

19 ManTa: Fundamentación18 Distinguibilidad Si dos objetos son distinguibles, sus nombres deben ser diferenciables Objetos distinguibles  Hay una característica que los diferencia Nombres diferenciables  Hay una selectora que los diferencia Si ninguna selectora diferencia los nombres de dos objetos diferentes, faltan selectoras En caso contrario, se dirá que el TAD es discriminante.

20 ManTa: Fundamentación19 Qué pasa si no hay distinguibilidad ? Se sabe que: Los nombres correspondientes son: e1=ins ( vac, a ) e2=ins ( ins ( vac, a ), b ) Nótese que: esv ( e1 ) = esv ( e2 ) prim ( e1 ) = prim ( e2 ) Pero: ati ( e1 ) = ins ( vac, b ) ati ( e2 ) = vac Y puesto que: esv ( ins ( vac, b ) ) = false  true = esv ( vac ) También: e1  e2 aba 

21 ManTa: Fundamentación20 Igualdad definida Deseable: definir una operación de igualdad eq-Y : Y  Y  bool eq-Y es una congruencia para el álgebra de términos del TAD, i.e., es compatible con la reescritura. Variante: definición implícita mediante funciones caracterizadoras. ManTa permite definición implícita de igualdades, pero no comprueba que lo sean.

22 ManTa: Fundamentación21 Interpretación del TAD Y Todo término básico debe tener exactamente una forma normal. Un término básico se interpreta como su forma normal. La reescritura es el mecanismo de cálculo de significado de los términos. Los axiomas deben definir comportamientos funcionales para las operaciones. –Más que completitud suficiente, el comportamiento funcional conlleva completitud. –ManTa ayuda a verificar la unicidad de los significados, pero no la terminación del proceso de reescritura. No hay medidas de complejidad de los términos. El modelo definido es el modelo inicial de la estructura algebraica.

23 ManTa: Fundamentación22 3 Variantes de definición Instanciación TAD W [ X 1 ]  Y [ X 1, X 2 ] DAT Producto cartesiano TAD W [ X 1, X 2 ]  Y1 [ X 1 ]  Y2 [ X 2 ] DAT Sumas TAD W [ X 1, X 2 ]  Y1 [ X 1 ]  Y2 [ X 2 ] DAT Restricción TAD W [ X ]  ( Y [ X ] : restr ) restr : Y  bool... DAT

24 ManTa: Fundamentación23 Semántica de las variantes de definición Siempre expresable en términos de la semántica estándar. Detalles adicionales en algunas de ellas v.gr., en productos cartesianos, definición de proyecciones. Los TADs definidos por variantes deben heredar características de aquellos en los que su definición se apoya. ManTa no sobrecarga operadores ( no maneja herencia en el sentido de POO ). Falta poder definir TADs que dependen de parámetros que no son TADs, sino objetos, v.gr., TAD Intervalo ( m, n ) = m.. n DAT TAD Z n DAT

25 ManTa: Fundamentación24 4 Prueba de teoremas sobre TADs ManTa sólo prueba teoremas expresables como ecuaciones. Para probar un teorema M = N se procede así: [ 1 ] Normalizar Reducir M y N a sus formas normales M* y N*. Si M*  N*, responder afirmativamente. [ 2 ]Inducción estructural Sobre las variables del TDI, usar esquemas de inducción. Si hay éxito, responder afirmativamente. Si no, intentar generalización. [ 3 ]Prueba semántica Si eq-Y( M*, N*)  * true, responder afirmativamente. En otro caso, responder “no se sabe”.

26 ManTa: Fundamentación25 Más sobre la prueba de teoremas... Las pruebas siguen un esquema similar al del probador de Boyer & Moore. Es adecuado ( eficiente ) el orden del procedimiento de prueba ? ManTa no aprovecha lemas ya demostrados para otras pruebas. Cómo manejar los lemas no orientables ?

27 ManTa: Fundamentación26 5 Implantación abstracta Una implementación ( , P ) de TAD Y ( fuente ) en TAD W ( objeto ) consta de: [ a ]  : W  Y( representación ) función recursiva, parcial, sobre [ b ]Para cada Y-función f, un W-programa p que la interpreta. P es el conjunto de estos programas Esquemáticamente, se tienen situaciones como: YY WW f   p YX W f  p

28 ManTa: Fundamentación27 Representación  La función de representación  : W  Y  es definida recursivamente sobre la construcción de Y ( LFN ! ). Así se garantiza que sea sobre. O sea:  se explica haciendo corresponder a cada Y-generadora un W- programa que calcula su representación v.gr., empty=  ( vac ) push (  ( c ), x )=  ( ins ( c, x ) ) Una implementación queda descrita al indicar qué W-programa interpreta cada Y-función

29 ManTa: Fundamentación28 ImpTADStack [ X ]  Cola [ X ] :  [SCem]empty=  ( vac ) [SCpu]push (  ( c ), x )=  ( ins ( c, x ) ) [SCpo]pop (  ( c ) )=  ( ant ( c ) ) [SCto]top (  ( c ) )= ult ( c ) [SCie]isempty (  ( c ) )= esv ( c ) [SCsz]size (  ( c ) )= tam ( c ) [SCeq]eq-stack (  ( c1 ),  ( c2 ) )= eq-cola ( c1, c2 ) Operaciones auxiliares ant:Cola  Cola ult:Cola  X Axiomas auxiliares [an1]ant ( vac )=vac [an2]ant ( ins ( c, x ) )=c [ul1]ult ( vac )=  [ul2]ult ( ins ( c, x ) )=x DATpmI

30 ManTa: Fundamentación29 Composición de implantaciones Supónganse dos implantaciones ( , P ), ( , Q ) YW: YW: WZ:WZ: Entonces: Y  Z:  °  es una implantación (  ° , P  °  Q ), donde  °  ( z )=  (  ( z ) ) P  °  Q = { f WZ | f Y-función, f WZ interp. f W en Z } Y W Z    ° 

31 ManTa: Fundamentación30 Verificación de implementación Los axiomas del TAD fuente deben ser verificados por la representación Por ejemplo: isempty ( empty )=isempty (  ( vac ) ), por [ SCem ] =esv ( vac ), por [ SCie ] =true, por [ ev1 ] isempty ( push ( s, x ) ) =isempty ( push (  ( c ), x ), porque  es sobre =isempty (  ( ins ( c, x ) ) ), por [ SCpu ] =esv ( ins ( c, x ) ), por [ SCie ] =false, por [ ev2 ]

32 ManTa: Fundamentación31 Verificar  Demostrar teoremas Caso general: verificar un axioma corresponde a demostrar un teorema en el TAD que representa Los teoremas son siempre ecuaciones Como  es sobre, las variables del TAD fuente se pueden remplazar por  -imágenes de variables del TAD objeto, v.gr., F ( c ) en lugar de s. Métodos de demostración de teoremas: Sintácticos Reducción a términos equivalentes Inducción sobre la construcción Semánticos Chequeo de igualdad

33 ManTa: Fundamentación32 Reducción a términos equivalentes Para demostrar e1 = e2 se usan: Programas definidos en la implementación Axiomas del TAD que representa como reglas de reescritura v.gr.: isempty ( empty )=isempty (  ( vac ) ), por [ SCem ] =esv ( vac ), por [ SCie ] =true, por [ ev1 ]

34 ManTa: Fundamentación33 6 Implementación concreta La composición de implementaciones es una implementación El último TAD puede ser una estructura computacional EC, i.e., objetos y operaciones que manipula un lenguaje de programación Y W1W1 EC W2W2 WnWn...

35 ManTa: Fundamentación34 El paso a lo concreto El paso Y  EC se dificulta, porque usualmente no se cuenta con una descripción axiomática de la EC. La definición de la implementación varía según el lenguaje de programación que manipule EC, v.gr., un lenguaje funcional ( Lisp, Scheme, CAML,... ) un lenguaje imperativo ( Pascal, C,... ) etc.

36 ManTa: Fundamentación35 Implementación en un lenguaje funcional No es difícil: Si los axiomas del TAD describen funciones recursivas, éstas son casi directamente programables en el lenguaje funcional objeto Es fácil construir prototipos funcionales para TADs ( y con ellos, constatar experimentalmente la adecuación a la realidad, la corrección, etc. )

37 ManTa: Fundamentación36 Ejemplo: Cola [ nat ]  Lisp :  vac=  [ nil ] ins (  [ lista ], n )=  [ ( cons n lista ) ] esv (  [ lista ] )=( null lista ) prim (  [ lista ] )=( priml lista ) donde: ( priml lista )  ( cond ( ( null lista )“indefinido” ) ( ( null ( cdr lista ) )( car lista ) ) ( t( priml (cdr lista ) ) ) ) La definición de priml se deriva “naturalmente” de los axiomas de prim

38 ManTa: Fundamentación37 Implementación en un lenguaje imperativo Un lenguaje imperativo es usualmente eficiente Preferible usar procedimientos que cambian argumentos que pasan por referencia Método: Representar elementos del TDI mediante estructuras de datos del lenguaje de programación v.gr., arreglos, apuntadores a estructuras dinámicas, etc. Para cada función, derivar de los axiomas una pre- y una poscondición Programar cumpliendo la especificación

39 ManTa: Fundamentación38 Implementación automática en ManTa ManTa ha funcionado con prototipos funcionales ( Lisp ) e imperativos ( C ). ManTa 3.0 genera prototipos C y un “banco de pruebas” para experimentar con la implantación concreta. Parece fácil generar prototipos CAML. Línea de acción: desarrollo de herramientas y métodos de transformación de programas que mantengan la semántica y mejoren la eficiencia.


Descargar ppt "ManTa Fundamentación Rodrigo Cardoso Universidad de los Andes Depto. de Ing. de Sistemas y Computación."

Presentaciones similares


Anuncios Google