3.6 Introducción a Maude
|
|
|
- María Antonia Franco Suárez
- hace 7 años
- Vistas:
Transcripción
1 3-64 CAPÍTULO 3. MÉTODO ALGEBRAICO DE ESPECIFICACIÓN. 3.6 Introducción a Maude Maude es un lenguaje que permite la ejecución simbólica de especificaciones algebraicas dadas mediante ecuaciones y pertenencias, es modular y admite la definición de módulos parametrizados así como su instanciación. A continuación veremos, de manera sucinta, sus características sintácticas Especificación de módulos La especificación de un módulo (funcional) en Maude tiene el aspecto siguiente: fmod <nombre del modulo> is <cuerpo del modulo> y en el cuerpo de un módulo pueden aparecer las siguientes declaraciones con los formatos que se enuncian en los ejemplos: Declaraciones de universos y de subuniversos (pueden repetirse): sort S. sorts S1 S2 S3 S4. subsort S1 < S2. subsorts S1 < S2 < S3. subsorts S1 < S2 S4 < S3. En el último caso, los universos S2 y S4 no están relacionados aunque ambos contienen a S1 y están contenidos en S3. Declaraciones de operaciones: op p : -> S1. op p : S1 S2 -> S3. ops p q : S1 S2 -> S3. Estas declaraciones pueden etiquetarse con [ctor] para indicar que se trata de una operación generadora del tipo del resultado. Las operaciones pueden declararse infijas mediante guiones de subrayado en los lugares donde deban aparecer los argumentos. Declaraciones de variables: 2 Para una descripción más completa de la sintaxis de Maude véase Maude: Specification and Programming in Rewriting Logic y A Maude Tutorial, ambos documentos disponibles en la dirección
2 3.6. INTRODUCCIÓN A MAUDE 3-65 var X : S. vars X Y : S. Declaraciones de axiomas: ecuaciones y pertenencias. Ambos tipos pueden aparecer condicionados, pero las condiciones se reducen siempre a un término b de tipo booleano obtenido a partir de expresiones construidas con las operaciones predefinidas _==_ y _=/=_ correspondientes al test de igualdad semántica y su fallo, y con _:_ o test de pertenencia, definidos para todos los universos. Declaraciones de ecuaciones: eq t1 = t2. ceq t1 = t2 if b. Declaraciones de pertenencias: mb t : S. cmb t : S if b. Declaraciones de importación de módulos (pueden repetirse): including <nombre de modulo>. protecting <nombre de modulo>. La primera indica una importación sin restricciones semánticas y se utiliza para especificaciones no acabadas en las que se pueden producir ampliaciones o reducciones de los conjuntos de valores. En cambio, la segunda indica que se va a respetar la especificación importada añadiendo, a lo más, alguna función nueva que no afecta a los conjuntos de valores establecidos. Las declaraciones de importación se escriben al principio del cuerpo del módulo, después aparecerán las declaraciones de universos y de subuniversos, las operaciones, las variables y los axiomas (aunque este orden puede alterarse). Todas las variables que se utilicen en los axiomas deben estar declaradas y en las expresiones puede utilizarse cualquier operación declarada en el módulo o importada de otro módulo Ejemplos Veamos cómo se escribirían en Maude los módulos correspondientes a algunas de las especificaciones que se han estudiado en los apartados anteriores. Un módulo para la especificación del universo de los booleanos quedaría:
3 3-66 CAPÍTULO 3. MÉTODO ALGEBRAICO DE ESPECIFICACIÓN. fmod BOOL is sort Bool. ops true false : -> Bool [ctor]. op not_ : Bool -> Bool. ops _and or_ : Bool Bool -> Bool. var X : bool. eq not true = false. eq not false = true. eq X and true = X. eq X and false = false. eq X or true = true. eq X or false = X. Un módulo como éste (con algunas operaciones más) está predefinido en Maude y se importa de forma automática en cada módulo que se defina, por lo que los valores las operaciones lógicas siempre están disponibles sin que necesaria su importación explícita. El módulo para la especificación de números naturales que aparece en el Ejemplo 3.7, con algunas operaciones de ejemplos posteriores, queda fmod NAT is sorts NatNz Nat Nat?. subsorts NatNz < Nat < Nat?. op z : -> Nat [ctor]. op s_ : Nat -> NatNz [ctor]. ops _+ *_ : Nat Nat -> Nat. op _-_ : Nat Nat -> Nat?. op _/_ : Nat NatNz -> Nat. op _mod_ : Nat NatNz -> Nat. op mcd : Nat Nat -> Nat?. op raiz : Nat -> Nat. op rz : Nat Nat -> Nat?. *** op. auxiliar *** op _<=_ : Nat Nat -> Bool. op _<_ : Nat Nat -> Bool. vars M N : Nat. var P : NatNz.
4 3.6. INTRODUCCIÓN A MAUDE 3-67 eq z + N = N. eq (s M) + N = s (M + N). eq z * N = z. eq (s M) * N = (M * N) + N. cmb M - N : Nat if N <= M. eq M - z = M. eq (s M) - (s N) = M - N. ceq M / P = z if M < P. ceq M / P = s ((M - P) / P) if P <= M. ceq M mod P = M if M < P. ceq M mod P = (M - P) mod P if P <= M. cmb mcd(m, N) : Nat if (M =/= z) or (N =/= z). eq mcd(p, z) = P. ceq mcd(m, N) = mcd(n, M) if M < N. ceq mcd(m, P) = mcd(m - P, P) if P <= M. eq raiz(n) = rz(n, z). cmb rz(n, M) : Nat if (M * M) <= N. ceq rz(n, M) = M if ((M * M) <= N) and (N < ((s M) * (s M))). ceq rz(n, M) = rz(n, s M) if ((s M) * (s M)) <= N. eq z <= N = true. eq (s M) <= z = false. eq (s N) <= (s M) = N <= M. eq M < z = false. eq z < (s N) = true. eq (s M) < (s N) = M < N. donde, por lo que se ha dicho más arriba, ya no es necesario declarar ni importar explícitamente los valores lógicos. Un módulo para los números enteros, donde se utilizan los subuniversos Pos y Neg correspondientes a los números positivos y a los números negativos, queda fmod ENT is
5 3-68 CAPÍTULO 3. MÉTODO ALGEBRAICO DE ESPECIFICACIÓN. sorts Ent Nat Pos Neg. subsorts Pos < Nat < Ent. subsort Neg < Ent. op z : -> Nat [ctor]. ops s_ p_ : Ent -> Ent [ctor]. ops _+ - *_ : Ent Ent -> Ent. op abs : Ent -> Nat. op _div_ : Nat Pos -> Nat. op mcd : Nat Nat -> Nat. ops _<= <_ : Ent Ent -> Bool. vars E E1 E2 : Ent. var N N1 N2 : Nat. var P : Pos. var Q : Neg. mb s N : Pos. mb p z : Neg. mb p Q : Neg. eq s (p E) = E. eq p (s E) = E. eq z + E2 = E2. eq (s E1) + E2 = s (E1 + E2). eq (p E1) + E2 = p (E1 + E2). eq E1 - z = E1. eq E1 - (s E2) = p (E1 - E2). eq E1 - (p E2) = s (E1 - E2). eq z * E2 = z. eq (s E1) * E2 = (E1 * E2) + E2. eq (p E1) * E2 = (E1 * E2) - E2. eq abs(n) = N. eq abs(q) = z - Q. ceq N div P = z if N < P.
6 3.6. INTRODUCCIÓN A MAUDE 3-69 ceq N div P = s ((N - P) div P) if P <= N. eq mcd(n, z) = N. ceq mcd(n1, N2) = mcd(n1 - N2, N2) if N2 <= N1. ceq mcd(n1, N2) = mcd(n2, N1) if N1 < N2. ceq E1 <= E2 = true if E2 - E1 : Nat. ceq E1 <= E2 = false if E1 - E2 : Pos. ceq E1 < E2 = true if E2 - E1 : Pos. ceq E1 < E2 = false if E1 - E2 : Nat. Y un módulo para los números racionales representados mediante pares formados por un número entero (numerador) y un entero positivo (denominador) queda: fmod RAC is protecting ENT. sorts RacNz Rac. subsort Ent < Rac. subsort Pos Neg < RacNz < Rac. op _/_ : Ent Pos -> Rac [ctor]. op a-ent : Rac -> Rac. ops _+. -. *._ : Rac Rac -> Rac. op _/._ : Rac RacNz -> Rac. ops _<. <=._ : Rac Rac -> Bool. vars e e1 e2 : Ent. vars p p1 p2 : Pos. var n : Neg. cmb e / p : RacNz if e =/= z. *** simplificacion de racionales *** ceq p1 / p = (p1 div mcd(p1, p)) / (p div mcd(p1, p)) if (s z) < mcd(p1, p). ceq n / p = (z - (abs(n) div mcd(abs(n), p))) / (p div mcd(abs(n), p)) if (s z) < mcd(abs(n), p). eq z / p = z. eq e1 / s z = e1. *** operaciones ***
7 3-70 CAPÍTULO 3. MÉTODO ALGEBRAICO DE ESPECIFICACIÓN. eq e1 +. e2 = e1 + e2. eq e +. (e2 / p2) = ((e * p2) + e2) / p2. eq (e1 / p1) +. e = (e1 + (e * p1)) / p1. eq (e1 / p1) +. (e2 / p2) = ((e1 * p2) + (e2 * p1)) / (p1 * p2). eq e1 -. e2 = e1 - e2. eq e -. (e2 / p2) = ((e * p2) - e2) / p2. eq (e1 / p1) -. e = (e1 - (e * p1)) / p1. eq (e1 / p1) -. (e2 / p2) = ((e1 * p2) - (e2 * p1)) / (p1 * p2). eq e1 *. e2 = e1 * e2. eq e *. (e2 / p2) = (e * e2) / p2. eq (e1 / p1) *. e = (e1 * e) / p1. eq (e1 / p1) *. (e2 / p2) = (e1 * e2) / (p1 * p2). eq e /. p = e / p. eq e /. n = (z - e) / (z - n). eq e /. (p1 / p) = (e * p) / p1. eq e /. (n / p) = (z - (e * p)) / (z - n). eq (e1 / p1) /. p = e1 / (p1 * p). eq (e1 / p1) /. n = (z - e1) / (z - (p1 * n)). eq (e1 / p1) /. (p / p2) = (e1 * p2) / (p * p1). eq (e1 / p1) /. (n / p2) = (z - (e1 * p2)) / (z - (n * p1)). eq e <. (e1 / p) = (e * p) < e1. eq (e1 / p) <. e = e1 < (p * e). eq (e1 / p1) <. (e2 / p2) = (e1 * p2) < (e2 * p1). eq e <=. (e1 / p) = (e * p) <= e1. eq (e1 / p) <=. e = e1 <= (p * e). eq (e1 / p1) <=. (e2 / p2) = (e1 * p2) <= (e2 * p1). donde los números enteros se consideran parte de los racionales y se establecen ecuaciones de simplificación para las representaciones de racionales que pueden llegar a producir un número entero Especificaciones genéricas Las especificaciones genéricas en Maude implican cuatro tipos de construcciones: la especificación de parámetros o teorías, la especificación de módulos parametrizados, la
8 3.6. INTRODUCCIÓN A MAUDE 3-71 instanciación de parámetros o especificación de enfoques de teorías y la particularización de módulos parametrizados. Una especificación de parámetro o teoría se enuncia de manera parecida a un módulo, salvo por los delimitadores, fth <nombre del parametro> is <cuerpo> endfth con la única diferencia de que no pueden aparecer operaciones constructoras y las ecuaciones no son necesariamente reglas de reescritura (pueden aparecer variables nuevas a la derecha) y se interpretan como teoremas que deben satisfacerse en los módulos que sustituyan a dicho parámetro. Una especificación de parámetro denota a cualquier álgebra que cumpla sus axiomas (no necesariamente al álgebra inicial) y sirve para fijar los requisitos que debe cumplir un módulo para que pueda sustituir a un parámetro. Algunos ejemplos de teorías son: la teoría trivial TRIV, fth TRIV is sort Elt. endth que únicamente impone como requisito la existencia de un dominio de valores; la teoría ORDTOT, fth ORDTOT is sort Elt. op _<_ : Elt Elt -> Bool. vars E1 E2 E3 : Elt. eq E1 < E1 = false. ceq E1 < E2 = true if E1 < E3 and E3 < E2. ceq E1 < E2 or E2 < E1 = true if E1 =/= E2. endth que exige la existencia de un dominio con una relación de orden total; y la teoría COTA, fth COTA is protecting NAT. tmax : -> NatNz. endth que impone como requisito la existencia de un valor natural no nulo.
9 3-72 CAPÍTULO 3. MÉTODO ALGEBRAICO DE ESPECIFICACIÓN. Un módulo parametrizado se declara de manera parecida a como se declara un módulo con las diferencias siguientes: junto al nombre del módulo debe aparecer una lista con los nombres de los parámetros y sus correspondientes teorías, estos parámetros se utilizan como si se tratase de importaciones con la salvedad de que los universos declarados en las teorías de los parámetros, cuando se utilicen, deben etiquetarse de manera postfija con los nombres de los parámetros correspondientes (para evitar ambigüedades cuando se empleen varios parámetros caracterizados por la misma teoría), y los universos que se definan en el módulo parametrizado deberán aparecer parametrizados en los mismos parámetros que el módulo. fmod <nombre del modulo> [X :: <nombre de teoria>] is protecting <nombre de modulo>. sort S[X]. subsort S.X < S[X] Una instancia o un enfoque de una teoría es una forma de ver un módulo concreto como un caso particular de la teoría; para fijar dicho enfoque es necesario establecer una serie de identificaciones entre elementos del módulo y sus correspondientes elementos en la teoría. Esto se hace en Maude con la construcción siguiente view <nom. enfoque> form <nom. teoria> to <nom. modulo> is sort <sort de la teoria> to <sort del modulo>.... op <op. de la teoria> to <op. del modulo>.... endv Una particularización de un módulo parametrizado se obtiene importando, de forma protegida, dentro de un módulo el nombre del módulo parametrizado con los parámetros sustituidos por enfoques. fmod <nombre instancia> is protecting <nom. modulo parametrizado>[nom enfoque]
10 3.6. INTRODUCCIÓN A MAUDE 3-73 Ejemplos de especificaciones genéricas o módulos parametrizados, así como de instanciaciones de dichos módulos, se irán viendo en los capítulos siguientes donde también se irán introduciendo algunas particularidades sobre la notación.
SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º, Año 2004/2005 SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Contenidos: 1. Descripción general de Maude 2. Comandos básicos 3. Formato
SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º, Año 2003/2004 SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Contenidos: 1. Descripción general de Maude 2. Comandos básicos 3. Formato
TEMA 1. ESPECIFICACIONES FORMALES ALGEBRAICAS EN MAUDE
Algoritmos y Estructuras de Datos I Grado en Ingeniería Informática, Curso 2º TEMA 1. ESPECIFICACIONES FORMALES ALGEBRAICAS EN MAUDE Contenidos: 1. Descripción general de Maude 2. Comandos básicos 3. Formato
Isabelle como un lenguaje funcional
Capítulo 1 Isabelle como un lenguaje funcional 1.1 Introducción Nota 1.1.1. Esta notas son una introducción a la demostración asistida utilizando el sistema Isabelle/HOL/Isar. La versión de Isabelle utilizada
Guía rápida sobre ejecución de especificaciones algebraicas en Maude bajo el entorno Eclipse para estudiantes de Estructuras de Datos.
Guía rápida sobre ejecución de especificaciones algebraicas en Maude bajo el entorno Eclipse para estudiantes de Estructuras de Datos. Actualizado para poder utilizar la herramienta de testing. 1. Introducción
Tema II: Introducción al Lenguaje Funcional
Tema II: Introducción al Lenguaje Funcional Características de Haskell Lenguaje funcional de o. superior fuertemente tipificado. Clasifica los entes de un programa en: objetos (constantes y funciones)
Tema 9: Declaraciones de tipos y clases
Tema 9: Declaraciones de tipos y clases Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla
Especificación de TAD. Lección 2
Especificación de TAD Lección 2 Esquema Características generales de una especificación Especificación algebraica Especificación no formal Lectura recomendada: sección 1.3 del libro de Z.J. Hernández et
El lenguaje C. 1. Identificadores, constantes y variables
Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria
1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5)
1 Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Práctica 1 1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:?
Axiomas del Cálculo de Predicados
Axiomas del Cálculo de Predicados Si bien el cálculo proposicional nos permitió analizar cierto tipo de razonamientos y resolver acertijos lógicos, su poder expresivo no es suficiente para comprobar la
UNIDAD IV Programación Funcional. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM
UNIDAD IV Programación Funcional Porqué? 2 Introducción Porque aprender programación funcional? - Recursión - Abstracción funcional - Funciones de primer orden Estos conceptos se han incorporado en la
SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º, Año 2004/2005 SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Contenidos: 1. Descripción general de Maude 2. Comandos básicos 3. Formato
Lenguajes funcionales: λ-cálculo
Lenguajes funcionales: λ-cálculo λ-cálculo (Church 1933) Cálculo para el estudio formal del comportamiento de las funciones Sintaxis: λ expresiones Reglas de reducción de λ expresiones Método matemático
Para entender la recursividad primero tenemos que entender la recursividad
Para entender la recursividad primero tenemos que entender la recursividad Funcional Clase 1 Matias Reparaz, Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 20 de Septiembre
Unidad 1. Análisis de Algoritmos. Ing. Leonardo R. L. Estructura de datos - Generalidades Unidad I Pág 1
Unidad 1 Análisis de Algoritmos Ing. Leonardo R. L. Estructura de datos - Generalidades Unidad I Pág 1 GENERALIDADES Qué se necesita para escribir un programa eficiente? Para diseñar programas eficientes
Contenido. Prólogo... Prólogo a la edición en español Argumentos y proposiciones lógicas Introducción
CONTENIDO vii Contenido Prólogo... Prólogo a la edición en español... XVIl XXI 1 Cálculo proposicional... 1 1.1 Argumentos y proposiciones lógicas 1.1.1 Introducción 1 1 1.1.2 Algunos argumentos lógicos
Módulo 1. (Primera Parte) INTRODUCCIÓN AL LENGUAJE LÓGICO- MATEMÁTICO
Módulo 1 (Primera Parte) INTRODUCCIÓN AL LENGUAJE LÓGICO- MATEMÁTICO Qué es un símbolo? El concepto de símbolo (una palabra que deriva del latín simbŏlum) sirve para representar, de alguna manera, una
Introducción a Haskell. El lenguaje Haskell
Capítulo 2. Introducción a Haskell 9 Introducción a Haskell Un ejemplo de fichero Haskell El lenguaje Haskell Haskell es un lenguaje funcional puro, no estricto y fuertemente tipificado. Puro = transparencia
Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28
Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes
Clasificación de Grafos
Grafos Clasificación de Grafos Los grafos se utilizan en aplicaciones muy diversas (redes de comunicaciones, redes de transporte, circuitos, planificación de tareas) cada una de las cuales utiliza una
TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad
TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad Calculo proposicional 1 Argumentos y proposiciones lógicas 1 Algunos argumentos lógicos importantes 2 Proposiciones 4 Conexiones lógicas 5 Negación (tabla)
Introducción a la Programación
0,25 puntos cada pregunta 1. Observa el siguiente esquema de código. Cuándo se ejecuta Instrucción4? IF Condición1 THEN Instrucción1 ELSE IF Condición2 THEN Instrucción2 ELSE IF Condición3 THEN Instrucción3;
Introducción a Haskell. Cecilia Manzino
Paradigmas de programación Un paradigma de programación representa un estilo particular o filosofía para la construcción del software. Los más comunes dan lugar a los siguientes tipos de programación:
Tema 3. Patrones y Definiciones de Funciones
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones
Divisibilidad y congruencia
Divisibilidad y congruencia Taller de Álgebra I Verano 2017 Algoritmo de la división Teorema Dados a, d Z, d 0, existen únicos q, r Z tales que a = qd + r, 0 r < d. Idea de la demostración: (caso a 0,
JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.
Javascript (II) 1 Elementos Básicos: Comentarios: Para una línea // Esto es un Comentario Para un bloque /*......... */ Literales: Valores que puede tomar una variable o una constante. Ejemplos: "Soy una
DESCRIPCIÓN DEL LENGUAJE DE PROGRAMACIÓN P-0
DESCRIPCIÓN DEL LENGUAJE DE PROGRAMACIÓN P-0 Este documento define los elementos de programación del lenguaje P-0, basado en un subconjunto del lenguaje de programación Arduino. 1.- PROGRAMA Un programa
2. Tipos abstractos de datos TEMA 3: SEMÁNTICA AXIOMÁTICA. 2. Tipos abstractos de datos. 2. Tipos abstractos de datos. 2. Tipos abstractos de datos
TEMA 3: SEMÁNTICA AXIOMÁTICA 1. Semántica axiomática de un lenguaje de programación Para poder utilizar tipos estructurados en los programas, será necesario tenerlos definidos como Tipos Abstractos de
Introducción a la programación. Cecilia Manzino
Paradigmas Un paradigma es un modelo o patrón en cualquier disciplina científica. Un paradigma de programación representa un estilo de programación en cual se escriben soluciones a problemas en términos
Tema 2. Tipos predefinidos
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 2. Tipos predefinidos 2.1 Tipos simples predefinidos El tipo Bool El tipo Int El tipo Integer
Tipos de datos algebraicos
Tipos de datos algebraicos Taller de Álgebra I Segundo cuatrimestre de 2013 Programación funcional Recordemos que un tipo de datos es un conjunto dotado con una serie de operaciones sobre los elementos
Guía 1: Funciones, precedencia y tipado
Introducción a los Algoritmos - do. cuatrimestre 014 Guía 1: Funciones, precedencia y tipado Docentes: Walter Alini, Luciana Benotti El objetivo de los siguientes ejercicios es introducirnos en la programación
POLINOMIOS Y FRACCIONES ALGEBRAICAS
POLINOMIOS Y FRACCIONES ALGEBRAICAS Monomio: Monomio es una expresión algebraica en la que las únicas operaciones que aparecen entre las variables son el producto y la potencia de exponente natural. 2x
Índice del capítulo. Capítulo 4. Expresiones. Las expresiones. Indice de la sección. Lenguajes de Programación. Introducción. 2.
Índice del capítulo Capítulo 4. Expresiones Lenguajes de Programación Capítulo 4. Expresiones 1. Carlos Ureña Almagro 2. Dpt. Lenguajes y Sistemas Informáticos ETSI Informática y de Telecomunicación Universidad
LÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Sintaxis y semántica
LÓGICA FORMAL TEORIAS DE PRIMER ORDEN Sintaxis y semántica Pedro López Departamento de Inteligencia Artificial Facultad de Informática Universidad Politécnica de Madrid Lenguajes de primer orden 1 La lógica
Algoritmos en teoría de números
Algoritmos en teoría de números IIC2283 IIC2283 Algoritmos en teoría de números 1 / 92 Para recordar: aritmética modular Dados dos números a, b Z, si b > 0 entonces existen α, β Z tales que 0 β < b y a
Apéndice 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas. . Analizando el
Apéndice 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas Polinomios Dedicaremos este apartado al repaso de los polinomios. Se define Rx a 0 a 1 x a 2 x 2...a n x n a 0,a 1,a 2,...,a
Operadores y reglas de precedencia
Capítulo 5 1 Operadores y reglas de precedencia MIA Ricardo González Lozano 2 Categoría de Operadores Los operadores son los elementos del lenguaje que nos permiten asignar, calcular y comparar expresiones,
Lenguajes de Programación. Capítulo 4. Expresiones.
Lenguajes de Programación. Capítulo 4. Expresiones. Carlos Ureña Almagro Curso 2011-12 Contents 1 Introducción 2 2 Literales 5 2.1 Literales tipos primitivos......................................... 5
ALGEBRA DE BOOLE George Boole C. E. Shannon E. V. Hungtington [6]
ALGEBRA DE BOOLE El álgebra booleana, como cualquier otro sistema matemático deductivo, puede definirse con un conjunto de elementos, un conjunto de operadores y un número de axiomas no probados o postulados.
Algoritmos y programas. Algoritmos y Estructuras de Datos I
Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de
GUÍAS DE ESTUDIO PROGRAMA DE ALFABETIZACIÓN, EDUCACIÓN BÁSICA Y MEDIA PARA JÓVENES Y ADULTOS
GUÍAS DE ESTUDIO Código PGA-0-R0 1 INSTITUCIÓN EDUCATIVA CASD PROGRAMA DE ALFABETIZACIÓN, EDUCACIÓN BÁSICA Y MEDIA PARA JÓVENES Y ADULTOS UNIDAD DE TRABAJO Nº PERIODO 1 ÁREA INTEGRADA: MATEMÁTICAS. ASIGNATURA:
Capítulo 5. Los números reales y sus representaciones Pearson Education, Inc. Diapositiva 5-3-1
Capítulo 5 Los números reales y sus representaciones 2012 Pearson Education, Inc. Diapositiva 5-3-1 Capítulo 5: Los números reales y sus representaciones 5.1 Números reales, orden y valor absoluto 5.2
GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:
Cuestionario Modulo 1.1 GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: 1001 0110. 2. qué es Dato? Definición: Es toda
CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional
CAPÍTULO IV: Programación Funcional 4.1 Introducción a la Programación Funcional 1 Programación Funcional Paradigma diferente a los imperativos, que se aleja de la máquina de von Neumann Basado en funciones
Algebras booleanas. B2) Leyes Distributivas. Cada operación es distributiva con respecto a la otra:
Algebras booleanas AXIOMAS DEL ALGEBRA DE BOOLE Sea B un conjunto en el cual se han definido dos operaciones binarias, + y * (En algunos casos se definen en términos de y respectivamente), y una operación
Lenguajes de Programación Programación funcional
Lenguajes de Programación Programación funcional Roberto Bonvallet Departamento de Informática Universidad Técnica Federico Santa María Concepto de función En el paradigma imperativo: Una función es una
Tipos Abstractos de Datos
Objetivos Repasar los conceptos de abstracción de datos y (TAD) Diferenciar adecuadamente los conceptos de especificación e implementación de TAD Presentar la especificación algebraica como método formal
Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.
Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Variables Conceptos de Memoria Una variable es un espacio en la memoria del PC Cada variable tiene un nombre, un tipo, un tamaño y un valor
Tipos de datos en Haskell
Tipos de datos en Haskell Ejercicios 1. Tipos enumerados Cuando los distintos valores que debemos distinguir en un tipo son finitos, entonces podemos enumerar todos los valores distintos para el tipo.
Programación 1 Tema 3. Información, datos, operaciones y expresiones
Programación 1 Tema 3 Información, datos, operaciones y expresiones Índice Datos y tipos de datos Datos primitivos en C++ Expresiones e instrucción de asignación Datos y tipos de datos Problema información
El sistema de clases de Haskell. Introducción
Capítulo 5. El sistema de clases de Haskell 56 El sistema de clases de Haskell Introducción Función monomórfica: sólo se puede usar para valores de un tipo concreto not :: Bool Bool not True = False not
Mecanismo de Reducción
Mecanismo de Reducción Taller de Álgebra I 1er Cuatrimestre 2017 Repaso: Qué vimos hasta ahora? Programar para qué? Implementar algoritmos que solucionen problemas. Pensamiento algorítmico Ver los problemas
Guía práctica de estudio 05: Pseudocódigo
Guía práctica de estudio 05: Pseudocódigo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Autorizado por: M.C. Alejandro Velázquez Mena Guía
Guía N 1 Introducción a las Matemáticas
Glosario: Guía N 1 Introducción a las Matemáticas - Aritmética: Es la rama de las matemáticas que se dedica al estudio de los números y sus propiedades bajo las operaciones de suma, resta, multiplicación
Unidad 2: Ecuaciones, inecuaciones y sistemas.
Unidad 2: Ecuaciones, inecuaciones y sistemas 1 Unidad 2: Ecuaciones, inecuaciones y sistemas. 1.- Factorización de polinomios. M. C. D y m.c.m de polinomios. Un número a es raíz de un polinomio es 0.
Informática de 1 o de Matemáticas. Ejercicios de Introducción a Haskell. Ejercicio 1 Consideremos la siguiente definición:
Ejercicios de Introducción a Haskell Informática de 1 o de Matemáticas Ejercicio 1 Consideremos la siguiente definición: doble x = x + x El valor de doble(doble 3) se puede calcular usando distintos métodos
Departamento de Matemáticas. ÁLGEBRA: Ecuaciones
3.5. Ecuaciones bicuadradas. Empezamos ahora a analizar qué pasa cuando el polinomio tiene grado más grande que dos. Todas éstas se engloban dentro de la misma estrategia de resolución que, como posteriormente
Matemáticas Básicas para Computación
Matemáticas Básicas para Computación MATEMÁTICAS BÁSICAS PARA COMPUTACIÓN 1 Sesión No. 6 Nombre: Álgebra Booleana Objetivo Durante la sesión el participante identificará las principales características
Análisis y Diseño de Sistemas
Análisis y Diseño de Sistemas Dpto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Clase 21 Especificación Formal Lic. María Mercedes Vitturini [[email protected]] 1er. CUATRIMESTRE
Tema 7. El sistema de clases
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 7. El sistema de clases 7.1 Funciones Sobrecargadas Clases e Instancias 7.2 Algunas Clases
Tema 2. Polinomios y fracciones algebraicas
Tema. Polinomios y fracciones algebraicas. Polinomios.... Definiciones.... Operaciones con polinomios.... Factorización de un polinomio.... Teorema del resto. Criterio de divisibilidad por -a.... Propiedades
Conceptos previos. Revisión de Sistemas Lógicos Formatos Numéricos. Dpto. Ingeniería Electrónica y Comunicaciones
Conceptos previos Revisión de Sistemas Lógicos Formatos Numéricos Revisión de Sistemas Lógicos Álgebra de Boole Base matemática de la Electrónica Digital Consta de dos elementos: 0 lógico y 1 lógico Tecnología
Programación Funcional Haskell Clase 19
Programación Funcional Haskell Clase 19 José Raymundo Marcial Romero [email protected] BUAP c José Raymundo Marcial Romero. Clase Número 19 p.1/23 Temas de la clase Lenguajes Funcionales Haskell y
Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS
Especificación algebraica ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Un tipo abstracto de datos se determina por las operaciones asociadas, incluyendo constantes que se consideran como operaciones sin
introducción...13 Capítulo 1. lógica y conjuntos...15
Índice introducción...13 Capítulo 1. lógica y conjuntos...15 1.1 Elementos de lógica [proposicional]...15 1.1.1 Conectivos lógicos...17 1.1.2 Combinación de operaciones...19 1.1.3 Tautología...19 1.1.4
Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa
Contenido Estructura de un programa en Java... 2 Tipos de datos básicos... 2 Operadores... 3 Literales... 4 Entrada / Salida... 4 Sentencias condicionales... 5 Funciones... 5 Ejercicios... 6 Variables,
Capítulo 1. Numeración 1 Variables... 2 Números naturales... 2 Números enteros... 3 Números reales Ejercicios Orden y valor absoluto...
ÍNDICE Capítulo 1. Numeración 1 Variables... 2 Números naturales... 2 Números enteros... 3 Números reales... 3 Ejercicios... 5 Orden y valor absoluto... 6 Ejercicios... 7 Suma de números reales... 9 Reglas
Tutorial Haskell David Julián Guzmán Cárdenas Cristian Alexanther Rojas Cárdenas Luis Ernesto Gil Castellanos
Tutorial Haskell David Julián Guzmán Cárdenas Cristian Alexanther Rojas Cárdenas Luis Ernesto Gil Castellanos Agenda 1. 2. 3. 4. 5. 6. Introducción Aspectos básicos del lenguaje Tipos y clases de tipos
JavaScript: Variables
JavaScript: Variables Una variable es un elemento que se emplea para almacenar y hacer referencia a otro valor. Gracias a las variables es posible crear "programas genéricos", es decir, programas que funcionan
Introducción al Cálculo Simbólico a través de Maple
1 Introducción al Cálculo Simbólico a través de Maple Introducción A manera de introducción, podemos decir que los lenguajes computacionales de cálculo simbólico son aquellos que permiten la representación
Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales
UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo
