LI2012: Ejercicios de resolución proposicional
En la clase de hoy del curso Lógica Informática se han comentado soluciones de los ejercicios propuestos del tema 5 del libro de ejercicios.
En la clase de hoy del curso Lógica Informática se han comentado soluciones de los ejercicios propuestos del tema 5 del libro de ejercicios.
En la clase de hoy de Informática de 1º del Grado en Matemáticas se ha realizado el 1º examen de la evaluación continua.
A continuación se muestra el examen junto con su solución:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
-- Informática (1º del Grado en Matemáticas) -- 1º examen de evaluación continua (8 de noviembre de 2012) -- --------------------------------------------------------------------- -- --------------------------------------------------------------------- -- Ejercicio 1. Definir la función primosEntre tal que (primosEntre x y) -- es la lista de los número primos entre x e y (ambos inclusive). Por -- ejemplo, -- primosEntre 11 44 == [11,13,17,19,23,29,31,37,41,43] -- --------------------------------------------------------------------- primosEntre x y = [n | n <- [x..y], primo n] -- (primo x) se verifica si x es primo. Por ejemplo, -- primo 30 == False -- primo 31 == True primo n = factores n == [1, n] -- (factores n) es la lista de los factores del número n. Por ejemplo, -- factores 30 \valor [1,2,3,5,6,10,15,30] factores n = [x | x <- [1..n], n `mod` x == 0] -- --------------------------------------------------------------------- -- Ejercicio 2. Definir la función posiciones tal que (posiciones x ys) -- es la lista de las posiciones ocupadas por el elemento x en la lista -- ys. Por ejemplo, -- posiciones 5 [1,5,3,5,5,7] == [1,3,4] -- posiciones 'a' "Salamanca" == [1,3,5,8] -- --------------------------------------------------------------------- posiciones x xs = [i | (x',i) <- zip xs [0..], x == x'] -- --------------------------------------------------------------------- -- Ejercicio 3. El tiempo se puede representar por pares de la forma -- (m,s) donde m representa los minutos y s los segundos. Definir la -- función duracion tal que (duracion t1 t2) es la duración del -- intervalo de tiempo que se inicia en t1 y finaliza en t2. Por -- ejemplo, -- duracion (2,15) (6,40) == (4,25) -- duracion (2,40) (6,15) == (3,35) -- --------------------------------------------------------------------- tiempo (m1,s1) (m2,s2) | s1 <= s2 = (m2-m1,s2-s1) | otherwise = (m2-m1-1,60+s2-s1) -- --------------------------------------------------------------------- -- Ejercicio 4. Definir la función cortas tal que (cortas xs) es la -- lista de las palabras más cortas (es decir, de menor longitud) de la -- lista xs. Por ejemplo, -- ghci> cortas ["hoy", "es", "un", "buen", "dia", "de", "sol"] -- ["es","un","de"] -- --------------------------------------------------------------------- cortas xs = [x | x <- xs, length x == n] where n = minimum [length x | x <- xs] |
El pasado mes de septiembre se presentó una tesis sobre verificación formal con Coq titulada Contributions to the formal verification of arithmetic algorithms.
Su autor es Érik Martin-Dorel, dirigido por Micaela Mayero y Jean-Michel Muller.
Su resumen es
The Floating-Point (FP) implementation of a real-valued function is performed with correct rounding if the output is always equal to the rounding of the exact value, which has many advantages. But for implementing a function with correct rounding in a reliable and efficient manner, one has to solve the “Table Maker’s Dilemma” (TMD). Two sophisticated algorithms (L and SLZ) have been designed to solve this problem, relying on some long and complex calculations that are performed by some heavily-optimized implementations. Hence the motivation to provide strong guarantees on these costly pre-computations. To this end, we use the Coq proof assistant. First, we develop a library of “Rigorous Polynomial Approximation”, allowing one to compute an approximation polynomial and an interval that bounds the approximation error in Coq. This formalization is a key building block for verifying the first step of SLZ, as well as the implementation of a mathematical function in general (with or without correct rounding). Then we have implemented, formally verified and made effective 3 interrelated certificates checkers in Coq, whose correctness proof derives from Hensel’s lemma that we have formalized for both univariate and bivariate cases. In particular, our “ISValP verifier” is a key component for formally verifying the results generated by SLZ. Then, we have focused on the mathematical proof of “augmented-precision” FP algorithms for the square root and the Euclidean 2D norm. We give some tight lower bounds on the minimum non-zero distance between sqrt(x²+y²) and a midpoint, allowing one to solve the TMD for this bivariate function. Finally, the “double-rounding” phenomenon can typically occur when several FP precision are available, and may change the behavior of some usual small FP algorithms. We have formally verified in Coq a set of results describing the behavior of the Fast2Sum algorithm with double-roundings.
Las transparencias usadas en la presentación se encuentran aquí.
En la clase de hoy del curso Lógica Informática hemos continuado la búsqueda de la automatización del razonamiento.
Comenzamos observando que, a partir de la forma normal conjuntiva, podemos representar las fórmulas, y los conjuntos de fórmulas, mediante conjunto de conjuntos de literales. Con esta nueva representación, basta una única regla de demostración: la regla de resolución. Esta regla engloba distintas reglas (como modus ponens, modus tollens y encadenamiento).
Mediante FNC, el problema de inconsistencia de un conjunto de de fórmulas se reduce al de la inconsistencia de un conjunto de cláusulas.
Mediante resolución, el problema de la inconsistencia de un conjunto de cláusulas se reduce a buscar la cláusula vacía entre las resolventes del conjunto S.
Mostramos un primer algoritmo de búsqueda de la cláusula vacía: el de saturación y dos mejoras: eliminación de tautologías y de subsumsución.
Como tarea pendientes se propone la resolución de los ejercicios del tema 5 del libro de ejercicios.
Las transparencias de esta clase son las páginas 1 a 24 del tema 5
Read More “LI2012: Resolución proposicional”
En la clase de hoy del curso Informática (de 1º de Grado en Matemáticas) se han comentado las soluciones de los ejercicios 3 a 8 de la 5ª relación sobre definiciones por comprensión.
Los ejercicios y sus soluciones se muestran a continuación
Read More “I1M2012: Ejercicios de definiciones por comprensión (5)”