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

Slides:



Advertisements
Presentaciones similares
ANALIZADOR SEMANTICO DIANA CAROLINA CASTAÑO YANCI VIVIANA CASTRO PEDRO LUIS FLÓREZ SANTIAGO GUTIÉRREZ A.
Advertisements

Seminario: Expresividad semántica y lógica de segundo orden
TECNICATURA UNIVERSITARIA EN INFORMATICA
Rocío Contreras Águila Primer Semestre 2010
funciones Por: Carlos Alberto García Acosta
DERIVADA DE UNA FUNCION REAL
Estructuras de datos y algoritmos
COLEGIO NACIONAL DE EDUCACIÓN PROFESIONAL TÉCNICA
Combinadores SK.
Maestría en Bioinformática Bases de Datos y Sistemas de Información Fundamentos de Lógica Ing. Alfonso Vicente, PMP
B ASES DE DATOS 1 Teórico: Diseño Conceptual. M ODELADO C ONCEPTUAL Primera etapa en el diseño de una BD Sub-etapas: Estudio del problema real Especificación.
Tipo de Dato Abstracto Tipos de datos:
1. La integral Gustavo Rocha
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
Aplicación del paradigma orientado a objetos
Preguntas tipo test (Tema I)
Traducción dirigida por la Sintaxis
ANALISIS SINTACTICO DESCENDENTE
Teoría de lenguajes y compiladores
CAPITULO 2 La Representación del Conocimiento
ESPACIOS VECTORIALES.
Algebra Booleana y Compuertas Lógicas
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Teoría de lenguajes y compiladores
PROGRAMACIÓN LÓGICA.
Answering Queries Using Views (Levy, Mendelzon, Sagiv, Srivastava) Javier López C.
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Teoremas de Completitud e Incompletitud de Gödel
Tema 2: Métodos de ajuste
Semana 5 Subprogramas..
Unidad 1 Definiciones Básicas
LEDA Un Lenguaje para la Especificación y Validación de Arquitecturas de Software Carlos Canal Velasco Depto. de Lenguajes y Ciencias de la Computación.
Problemas, algoritmos y programas: Modelar: Simular o programar su solución en un computador. Algoritmos: Es un conjunto finito, y no ambiguo de etapas.
Representación del conocimiento
Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez
Sintaxis.
Estructura de Datos y Algoritmos
Inteligencia artificial
1.1 Concepto y terminología
Tipos de Datos (Data Types)
PRUEBA SABER MATEMÁTICAS 3° Y 5°
Descomposición Factorial Unidad 5
Agenda Clase 16 Motivación e Historia de la Programación Funcional y la Programación Lógica. Concepto y Características de la Programación Funcional. Ventajas.
Material de apoyo Unidad 4 Estructura de datos
Campus Estado de México—Raúl Monroy Resolución, la regla de inferencia y el cálculo Raúl Monroy.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
Universidad Nacional de Colombia Curso Análisis de Datos Cuantitativos.
Fodor  Reduccionismo demasiado fuerte en su intrepretación de la unidad de la ciencia. . Es incompatible con las resultados probables de las ciencias.
TPPSFAsistentes para programadores Asistentes de Pruebas para Programadores Cálculo de Construcciones.
Sabemos reconocerlas, y calcularlas como soluciones de sistemas de ecuaciones, o de desigualdades Buscamos métodos de cálculo generales y eficientes Problemas.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
DEFINICIÓN DE OBJETO Un objeto es aquello que puede ser observado, estudiado y aprendido CARACTERÍSTICAS nos permiten conocerlos mediante la observación,
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
INAOE CURSO PROPEDEUTICO PARA LA MAESTRIA EN ELECTRONICA
Ingeniería de Requisitos
Presente un cuestionario con los aspectos mas importantes sobre los
Metodología de la programación
“CURSO PROPEDÉUTICO PARA EL MEJORAMIENTO DEL PENSAMIENTO MATEMÁTICO”
TIPOS DE DATOS ABSTRACTOS
Ecuaciones y Sistemas de Ecuaciones Lineales
6. Sistemas de ecuaciones diferenciales lineales
PARADIGMA Es un marco de referencia que impone reglas sobre cómo se deben hacer las cosas. CONCEPTO DE PARADIGMA DE PROGRAMACION colección de modelos conceptuales.
La Programación Orientado a Objetos
Fundamentos de Programación Unidad I Conceptos Básicos.
Álgebra, ecuaciones y sistemas
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
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:

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

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

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.

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

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 }

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 ]

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.

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

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.

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

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 ),... }

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 )

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

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 ( ! )

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

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

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

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.

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 

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.

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.

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

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

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

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 ?

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

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

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

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    ° 

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 ]

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

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 ]

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

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.

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

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

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

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.