Construcción Formal de Programas en Teoría de Tipos. Introducción a Coq
|
|
- Concepción Valdéz Rubio
- hace 6 años
- Vistas:
Transcripción
1 Construcción Formal de Programas en Teoría de Tipos Introducción a Coq Grupo de Métodos Formales Instituto de Computación Facultad de Ingeniería Universidad de la República Escuela Río 2014, Río Cuarto, Argentina
2 Sean a y b N, b 0. Motivación Ejemplo: División Calculamos a div b y a mod b simultáneamente haciendo recursión en a: 0 divmodb = <0,0> (n+1) divmod b = let <q,r> = n divmod b in if r < b-1 then <q,r+1> else <q+1,0>
3 División: especificación y prueba Especificación: Para todos a,b N tq. b 0 existen q y r tq. a=b.q+r y r < b. Prueba de que el programa es correcto: por inducción en a: 0 divmodb = <0,0> (n+1) divmod b = let <q,r> = n divmod b in if r < b-1 then <q,r+1> else <q+1,0> 0 = b y 0 < b supongamos n = b.q+r y r < b luego, si r < b - 1 entonces n+1 = b.q+(r+1) y r+1<b sino n+1 = b.(q+1)+0 y 0<b
4 Coq El asistente de pruebas Coq es un entorno que permite trabajar formalmente con sentencias matemáticas. Permite la definición de: - objetos (enteros, listas, árboles, funciones, programas ) - fórmulas (usando predicados básicos, conectivos y cuantificadores) - pruebas (lemas, teoremas) El compilador de Coq automáticamente chequea la corrección de las definiciones (conjuntos/tipos bien formados, terminación de las funciones) y de las pruebas.
5 Coq El sistema Coq permite trabajar con: bibliotecas, notaciones avanzadas, desarrollos modulares... También provee un mecanismo de extracción de programas hacia lenguajes funcionales (Ocaml, Haskell). Aplicaciones de Coq incluyen (entre otras): - formalización de semánticas de lenguajes de programación (certificación del compilador de CompCert, certificación a nivel EAL7 de Java Card); - diseño de plataformas especiales para la verificación de software (Certycript); - formalización de matemáticas (el teorema de los 4 colores); Más información en: coq.inria.fr
6 Lenguaje Lógico Lógica como herramienta para especificar y probar corrección de programas
7 Cálculo de predicados Sintaxis Términos símbolos de variable pueden ser variables de individuo, predicado o función un símbolo de variable tiene asociado un dominio símbolos de constante símbolos de función Fórmulas variables de predicados (unarios, binarios, etc) conectivos:,,,, ~, cuantificadores:, Semántica Noción de verdad: existencia de una prueba (lógica constructivista)
8 Conectivos en Coq Prop es la familia de proposiciones Declaración de variables de proposición: Conectivos: Variable A B C: Prop,,, son primitivos (/\, \/,->, False) ~ y son definidos: ~α := (α ) α β := (α β) (β α)
9 Cálculo de predicados - orden Cálculo de predicados de primer orden: Cuantificación sobre variables de individuos únicamente : x nat. x=x Cálculo de predicados de orden superior: Cuantificación sobre variables de individuos, función y predicados P. P 0 ( x. P x P (S x)) x. P x f. g. ( x. f(x) = g(x) f = g)
10 Cálculo de predicados en Coq -Variables- Cada símbolo de variable o constante tiene asociado su dominio y Set es la clase de todos los dominios nat : Set Z : Set (nat es dominio) (Z es un dominio) 0 : nat (0 es un elemento del dominio nat) f : nat nat (f es una función unaria de naturales en naturales) g : nat nat nat (g es una función binaria entre naturales currificación )
11 Cálculo de predicados en Coq -Predicados- Un predicado se representa como una función proposicional sobre cierto dominio La aridad del predicado está dada por la cantidad de argumentos de la función P : nat Prop (P es un predicado unario sobre naturales) Q : nat (nat nat) Prop (Q es un predicado binario entre naturales y funciones de naturales en naturales)
12 Notación: Cálculo de predicados en Coq -Cuantificadores- ( x U) α se escribe en Coq forall x:u, α ( x U) α se escribe en Coq exists x:u, α Ejemplos: forall P: nat Prop, P 0 (forall x:nat, P x P (S x)) forall x:nat, P x forall f g: nat nat, (forall x:nat, f x = g x) f = g
13 Más ejemplos Considerando las declaraciones: 0 : nat S : nat nat Le : nat nat Prop Min : nat (nat nat) Prop Algunas fórmulas del cálculo de predicados: Le 0 (S 0) ~(Le (S 0) 0) exists x:nat, Min x S forall (f:nat nat)(m x : nat), Le m (f x) Min m f
14 Construcción de pruebas en Coq Para comenzar: Queremos probar cierta fórmula objetivo (goal) Para ello, utilizaremos diferentes tácticas que transforman al objetivo original e introducen hipótesis adicionales
15 Desarrollo de pruebas lógicas Situación general: existen varios objetivos a probar, cada uno a partir de ciertas hipótesis: donde: Γ 1 Γ 2 Γ n 2 α 1 α 2... secuentes α n cada Γ i es un conjunto de fórmulas (hipótesis) de la forma: H0: γ 0, H1: γ 1,... Hk: γ k. α i es una fórmula cada α i debe ser probada a partir de Γ i
16 Tácticas = Reglas de inferencia Unatáctica transforma un secuente de la forma: Γ i en cero o más secuentes: α i Γ Γ Γ Γ i 1 α i 1 Γ i 2 α i 2... Γ i n α i n tales que probar los últimos es suficiente para construir una prueba del secuente original.
17 Prueba completa = Árbol α Goal inicial Γ 1 Γ 2 α 1 α 2 Subgoals Γ 11 α 11 Γ 12 α 12 Γ 1n α 1n Γ 21 α
18 Tácticas caso trivial Γ H: α α assumption Probado!
19 Tácticas Reglas de introducción introducción Γ α β intro H Γ H: α β variantes: intros, intros H 1...H n
20 Tácticas Cuantificador universal introducción Γ forall x:α, β intro x Γ x: α β el identificador x es opcional variantes: intros, intros x 1,...x n
21 Tácticas Reglas de eliminación eliminación Γ H: α β β apply H Γ H: α β α en general: Γ H: α 1 α 2... β β apply H Γ H:... α 1 Γ H:... α 2...
22 Tácticas Cuantificador universal eliminación Γ H: forall x:α, γ β apply H Probado! Si existe a:α tal que β= γ[x:=a]
23 introducción Tácticas Cuantificador existencial Γ exists x:u, α(x) exists t Γ α(t) eliminación Γ H: exists x:u, α(x) β elim H donde t:u (witness) Γ H: exists x:u, α(x) forall y: U, α(y) β donde y es una variable nueva que no ocurre en β
24 Ejemplo 1 Variable A B: Prop. Lemma L1: A -> B -> A. Proof. intros H1 H2. assumption. Qed.
25 Ejemplo 2 Variable U: Set. Variable P Q: U -> Prop. Lemma L2 : (forall x:u, P x -> Q x) -> (forall y:u, P y) -> forall z:u, Q z. Proof. intros H1 H2 z. apply H1. apply H2. Qed.
26 Lenguaje de Programación Cálculo de Construcciones
27 Cálculo λ simplemente tipado Sintaxis Términos Tipos e ::= x λx.e (e 1 e 2 ) c α ::= t α 1 α 2 x Var c Const t TConst Contextos Γ ::= x 1 :α 1... x n :α n (n 0)
28 Sistema de tipos Juicios de la forma: Γ - e: α la expresión e tiene tipo α bajo el contexto Γ Reglas: x:α Γ Γ - x:α ctx Γ, x:α - e: β Γ - λx.e: α β abs Γ - e 1 :α β Γ - e 2 : α Γ - (e 1 e 2 ): β app
29 Cálculo λ simplemente tipado en Coq Constantes de tipo: nat, bool, etc. Las abstracciones se escriben con: fun... =>... El tipo de las variables aparece en las abstracciones: fun x: nat => x : nat nat fun x: bool => x : bool bool fun (f:nat bool)(x:nat) => f x : bool fun (g:nat nat bool)(n:nat) => g n : nat bool
30 Polimorfismo paramétrico En los lenguajes funcionales (ML, Haskell) escribimos: λx. x : α α Variable de tipo!! En Coq, abstraemos el tipo. Los tipos de datos pertenecen a la clase Set: fun (X:Set)(x:X) => x : forall X:Set, X X Abstrayendo en la clase Set se obtiene polimorfismo paramétrico
31 Tipos dependientes Polimorfismo paramétrico = abstraer variables de tipo (de Set). En forma más general: podemos abstraer variables de cualquier tipo. Tipos dependientes Tipos dependientes: un tipo puede depender no solo de otro tipo, sino también de un objeto de cierto tipo.
32 Array: Set nat Set (Array bool 3) Tipos dependientes Ejemplo zip: forall (A B:Set)(k:nat), (Array A k) (Array B k) Array (A*B) k
33 Lenguaje de Programación de Coq Es un lambda cálculo tipado con las siguientes características: es de orden superior permite definir funciones paramétricas tiene tipos dependientes permite definir tipos inductivos permite definir tipos coinductivos CC CCI CCI Cálculo de Construcciones (CC) Cálculo de Construcciones Inductivas = CC + tipos inductivos (CCI) Cálculo de Construcciones Inductivas y Coinductivos = CCI + tipos coinductivos (CCI )
34 Cálculo de Construcciones (Co)Inductivas Inducción y Recursión
35 Tipos Inductivos Inductive bool : Set := true : bool false : bool Inductive nat : Set := 0 : nat S : nat nat
36 Tipos Inductivos Paramétricos Parámetros: son los argumentos que estan fijos y son globales en toda una definición. Inductive list (A:Set) : Set := nil : list A cons : A list A list A
37 Familias Inductivas de Tipos Inductive array (A:Set) : nat Set := empty : array A 0 add : forall n:nat, A array A n array A (S n) Cómo podría definirse una familia inductiva para matrices? Inductive matrix (A:Set) : nat nat Set :=
38 Familias Mutuamente Inductivas Inductive with tree (A:Set) : Set := node: A forest A tree A forest (A:Set) : Set := empty_f : forest A add_tree: tree A forest A forest A
39 Predicados Inductivos Inductive Le : nat nat Prop := le0 : forall n:nat, Le 0 n les : forall n m:nat, Le n m Le (S n) (S m) Inductive Mem (A : Set) (a : A) : list A -> Prop := here : forall x : list A, Mem A a (cons A a x) there : forall x : list A, Mem A a x -> forall b : A, Mem A a (cons A b x) Qué especifica Mem?
40 Definiciones Inductivas - Significado Cuando escribimos: Inductive nat : Set := 0 : nat S : nat nat estamos haciendo muchas cosas estamos definiendo un conjunto y una manera de construir objetos en él. estamos diciendo que ésta es la única forma de construir los objetos del conjunto. estamos diciendo, además, que las dadas son formas distintas de construir objetos.
41 Consecuencias del significado de una Definición Inductiva (I) Análisis de casos: fun n:nat => match n with 0 true S m false end.
42 Recursión: Consecuencias del significado de una Definición Inductiva (II) Fixpoint F (n m:nat) {struct n}: nat := match n with 0 m S k S (F k m) end. Qué calcula F?
43 Consecuencias del significado de una Definición Inductiva (III) Análisis de casos: Γ Γ Γ case n n: nat P n P 0 forall x:nat, P (S x)
44 Inducción: Consecuencias del significado de una Definición Inductiva (IV) Γ Γ Γ n: nat elim n n:nat n:nat P n P 0 forall x:nat, P x P (S x)
45 Set Implict Arguments. Ejemplos Fixpoint append (A:Set) (l1 l2:list A) {struct l1} : list A := match l1 with nil => l2 cons x l1 => cons x (append l1 l2) end. Fixpoint filter (A:Set) (P:A->bool) (l:list A) {struct l} : (list A) := match l with nil => nil cons x l => match (P x) with true => cons x (filter P l ) false => filter P l end end. Lemma append_filter: forall (A:Set) (l1 l2 : list A) (P: A -> bool), filter P (append l1 l2) = append (filter P l1) (filter P l2). Cómo sería la prueba del lema?
46 Definiciones Coinductivas Listas infinitas: CoInductive Stream (A:Set) : Set := Cons : A Stream A Stream A. Funciones Corecursivas Pruebas Coinductivas
47 Ejemplos Set Implict Arguments. Definition head (A:Set)(s : Stream A) := match s with Cons a s => a end. Definition tail (A : Set)(s : Stream A) := match s with Cons a s => s end. CoFixpoint repeat (A:Set)(a:A) : Stream A := Cons a (repeat a). CoInductive EqSt (A: Set) : Stream A -> Stream A -> Prop := eqst : forall s1 s2: Stream A, head s1 = head s2 -> EqSt (tail s1) (tail s2) -> EqSt s1 s2.
48 Más ejemplos CoFixpoint iterate (A:Set)(f:A -> A)(a:A) : Stream A:= Cons a (iterate f (f a)). CoFixpoint map (A B:Set)(f:A -> B)(s:Stream A) : Stream B:= match s with Cons a tl => Cons (f a) (map f tl) end. Lemma map_iterate : forall (a:set)(f:a -> A)(x:A), EqSt (iterate f (f x)) (map f (iterate f x)).
49 Relación entre Pruebas y Programas Isomorfismo de Curry-Howard
50 Construcción de pruebas en Coq Qué estamos haciendo cuando probamos un teorema en Coq? Construimos un objeto, que es la prueba del teorema En qué lenguaje está escrita esa prueba? En Cálculo Lambda!!!! Cada enunciado lógico se corresponde con un tipo Cada prueba es un objeto del tipo correspondiente
51 Isomorfismo de Curry-Howard Identificación de proposiciones con tipos P : Prop pensamos a P como el tipo cuyos objetos son las pruebas de P Identificación de pruebas con objetos a : P significa que a es una prueba de P
52 Isomorfismo en Coq Cuando constuimos una prueba de un enunciado en Coq, estamos construyendo un término λ del tipo correspondiente al enunciado. La situación general es de la forma: Γ 1 Γ n? 1 : α 1? n : α n Tácticas: constructoras de términos
53 Construcción de pruebas en Coq Γ H: α?: α assumption: corresponde a la prueba H:α Γ intro H:?: α β corresponde a la prueba [H:α]? 1 donde? 1 será la prueba de β corresp. a: Γ H: α? 1 : β Γ H: α β?: β apply H: corresponde a la prueba (H? 1 ) donde? 1 será la prueba de α corresp. a: Γ H:α β? 1 : α
54 Verificación de Programas Funcionales
55 Especificación de programas i Input. ψ(i) o Output. ϕ(i,o) donde Input y Output son tipos de datos, ψ es una proposición que expresa cierta condición que debe cumplir el valor de entrada (precondición) y ϕ es la proposición que expresa la relación que debe cumplirse entre el valor de entrada y el valor de salida (poscondición) Ejemplo: Para todos a,b N tq. b 0 existen q y r tq. a=b.q+r y r < b. ( a,b N ) b 0 (q,r) N N. a=b.q+r r < b
56 Extracción de programas Si la prueba del existencial i Input. ψ(i) { o Output ϕ(i,o) } es constructiva, el programa que calcula el resultado a partir de la entrada se encuentra necesariamente embebido en la prueba. Qué diferencia el programa de la prueba? La prueba es el programa más la información lógica necesaria para demostrar la especificación Para obtener el programa hay que extraer de la prueba la información computacional y olvidar la información lógica
57 Extracción de programas Información computacional : objetos que viven en Set Información lógica : objetos que viven en Prop Mecanismo de extracción : Recorre el término de prueba recuperando los datos que viven en Set, olvidando los que viven en Prop y manteniendo la estructura. Originalmente se extrae hacia Fw, un lenguaje de programación no dependiente. Las dependencias en los objetos computacionales se olvidan. [Paulin-Mohring 89]
58 Extracción de programas Dada una prueba p : i Input. ψ(i) { o Output ϕ(i,o) } el contenido computacional de p será una función f p : Input Output Para ello deberá ocurrir que : Input : Set Output : Set ψ(i), ϕ(i,o) : Prop Observar que los sorts de los tipos que intervienen en la especificación indican al procedimiento de extracción qué recorrer y qué olvidar durante la recorrida
59 Verificación de programas Es el proceso inverso al de extracción P: Spec : Spec fp Programa Programa Spec : Spec P:Spec
60 Verificación de programas Dado el programa y la especificación hay que probar que el programa cumple con la especificación: justificar la terminación del programa probar los objetivos ligados con la especificación particular.
61 Sean a y b N, b 0. Ejemplo: División Calculamos a div b y a mod b simultáneamente haciendo recursión en a: 0 divmod b = (0,0) (n+1) divmod b = let (q,r) = n divmod b in if r < b-1 then (q,r+1) else (q+1,0)
62 División: extracción, verificación Especificación: Para todos a,b N tq. b 0 existen q y r tq. a=b.q+r y r < b. Prueba de que el programa es correcto: por inducción en a: 0 divmod b = <0,0> (n+1) divmod b = let (q,r) := n divmod b in if r < b-1 then (q,r+1) else (q+1,0) 0 = b y 0 < b supongamos n = b.q+r y r < b. luego, si r < b - 1 entonces n+1 = b.q+(r+1) y r+1 < b sino n+1 = b.(q+1)+0 y 0 < b
63 Muchas gracias! Más información en: - coq.inria.fr - fing.edu.uy/inco/grupos/mf/tppsf
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
Más detallesIsabelle 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
Más detallesLógica Proposicional IIC1253. IIC1253 Lógica Proposicional 1/64
Lógica Proposicional IIC1253 IIC1253 Lógica Proposicional 1/64 Inicio de la Lógica Originalmente, la Lógica trataba con argumentos en el lenguaje natural. Ejemplo Es el siguiente argumento válido? Todos
Más detallesTipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos
Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos
Más detallesPráctico 5. Definiciones Inductivas - Segunda Parte -
Práctico 5 Definiciones Inductivas - Segunda Parte - Objetivos: Trabajar con tipos inductivos. Realizar pruebas por inducción y análisis de casos. Familiarizarse con los lemas de inversión y las tácticas
Más detallesTÍ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)
Más detallesALGEBRA y ALGEBRA LINEAL. Primer Semestre CAPITULO I LOGICA Y CONJUNTOS.
ALGEBRA y ALGEBRA LINEAL 520142 Primer Semestre CAPITULO I LOGICA Y CONJUNTOS. DEPARTAMENTO DE INGENIERIA MATEMATICA Facultad de Ciencias Físicas y Matemáticas Universidad de Concepción 1 La lógica es
Más detallesTema 6: Teoría Semántica
Tema 6: Teoría Semántica Sintáxis Lenguaje de de las las proposiciones Lenguaje de de los los predicados Semántica Valores Valores de de verdad verdad Tablas Tablas de de verdad verdad Tautologías Satisfacibilidad
Más detallesTeoría de Modelos Finitos: Motivación
Teoría de Modelos Finitos: Motivación IIC3260 IIC3260 Teoría de Modelos Finitos: Motivación 1 / 29 Poder expresivo de una lógica: Caso finito Desde ahora en adelante nos vamos a concentrar en las estructuras
Más detallesLógica de Predicados de Primer Orden
Lógica de Predicados: Motivación Todo natural es entero y 2 es un natural. Luego 2 es entero. p q r p, q r es claramente un razonamiento válido pero no es posible demostrarlo desde la Lógica Proposicional
Más detallesCapítulo 4. Lógica matemática. Continuar
Capítulo 4. Lógica matemática Continuar Introducción La lógica estudia la forma del razonamiento, es una disciplina que por medio de reglas y técnicas determina si un teorema es falso o verdadero, además
Más detallesIntroducción. El uso de los símbolos en matemáticas.
Introducción El uso de los símbolos en matemáticas. En el estudio de las matemáticas lo primero que necesitamos es conocer su lenguaje y, en particular, sus símbolos. Algunos símbolos, que reciben el nombre
Más detallesMatemáticas Discretas Lógica
Coordinación de Ciencias Computacionales - INAOE Matemáticas Discretas Lógica Cursos Propedéuticos 2010 Ciencias Computacionales INAOE Lógica undamentos de Lógica Cálculo proposicional Cálculo de predicados
Más detallesSistemas deductivos. Lógica Computacional. Curso 2005/2006. Departamento de Matemática Aplicada Universidad de Málaga
Sistemas deductivos Lógica Computacional Departamento de Matemática plicada Universidad de Málaga Curso 2005/2006 Contenido 1 Sistema axiomático de Lukasiewicz Sistema proposicional Extensión a predicados
Más detallesANEXO XVII DE LA RESOLUCION N
Hoja 1 de 7 UNIVERSIDAD NACIONAL DE CÓRDOBA Facultad de Ciencias Exactas Físicas y Naturales República Argentina Programa de: Código: Informática Carrera: Materia común Res. Nº Plan: Puntos:3.5 Escuela:
Más detallesCoordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 1: Lunes 11 Viernes 16 de Marzo. Contenidos
Coordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 1: Lunes 11 Viernes 16 de Marzo Complementos Contenidos Clase 1: Elementos de lógica: Conectivos, tablas de verdad, tautologías y contingencias.
Más detallesIntroducción a la Matemática Discreta
Introducción a la Matemática Discreta Lógica proposicional y Álgebras de Boole Luisa María Camacho Camacho Introd. a la Matemática Discreta 1 / 25 Introducción a la Matemática Discreta Temario Tema 1.
Más detallesÍndice Proposiciones y Conectores Lógicos Tablas de Verdad Lógica de Predicados Inducción
Curso 0: Matemáticas y sus Aplicaciones Tema 5. Lógica y Formalismo Matemático Leandro Marín Dpto. de Matemática Aplicada Universidad de Murcia 2012 1 Proposiciones y Conectores Lógicos 2 Tablas de Verdad
Más detallesUn enunciado es toda frase u oración que se emite
OBJETIO 2: Aplicar la lógica proposicional y la lógica de predicados en la determinación de la validez de una proposición dada. Lógica Proposicional La lógica proposicional es la más antigua y simple de
Más detallesTipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S
Tipos de datos en S Lógica y Computabilidad Verano 2011 Departamento de Computación - FCEyN - UBA Computabilidad - clase 5 Codificación de programas, Halting problem, diagonalización, tesis de Church,
Más detallesLógica de primer orden: Repaso y notación
Lógica de primer orden: Repaso y notación IIC3263 IIC3263 Lógica de primer orden: Repaso y notación 1 / 29 Lógica de primer orden: Vocabulario Una fórmula en lógica de primer orden está definida sobre
Más detallesTeoría de la Computación puesta en Práctica
Teoría de la Computación puesta en Práctica Marcelo Arenas M. Arenas Teoría de la Computación puesta en Práctica 1 / 24 Problema a resolver WiMAX (Worldwide Interoperability for Microwave Access): estándar
Más detallesConjuntos, relaciones y funciones Susana Puddu
Susana Puddu 1. Repaso sobre la teoría de conjuntos. Denotaremos por IN al conjunto de los números naturales y por ZZ al de los enteros. Dados dos conjuntos A y B decimos que A está contenido en B o también
Más detallesEstructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR
Estructuras de Datos Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR ...but note that an implementation need not be actualized as code a concrete design is sufficient. Chris Okasaki
Más detallesMatemáticas Discretas TC1003
Matemáticas Discretas TC1003 Módulo I: Descripción Departamento de Matemáticas ITESM Módulo I: Descripción Matemáticas Discretas - p. 1/15 En esta sección veremos un poco de la historia de la Lógica: desde
Más detallesEsquema. Condicionales. Ejemplo de condicional. Demostración. P { if (B) uno else dos } Q. P { while (B) cuerpo } Q
Esquema Teórica Imperativo 2 Estructuras de control Instrucción de asignación P{v=e Q // estado 1; vale P: true v:=e; // vale Q: v == e@1 && para toda vi: vi == vi@1 Instrucciones de Control de Flujo P
Más detallesLa estructura de un cuerpo finito.
9. CUERPOS FINITOS El objetivo de este capítulo es determinar la estructura de todos los cuerpos finitos. Probaremos en primer lugar que todo cuerpo finito tiene p n elementos, donde p es la característica
Más detallesFundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002
Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Ejercicios Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto
Más detallesGrupos libres. Presentaciones.
S _ Tema 12.- Grupos libres. Presentaciones. 12.1 Grupos libres. En el grupo Z de los enteros vimos una propiedad (cf. ejemplos.5), que lo caracteriza como grupo libre. Lo enunciamos al modo de una Propiedad
Más detalleslogica computacional Tema 1: Introducción al Cálculo de Proposiciones
Tema 1: Introducción al Cálculo de Proposiciones Introducción al concepto de cálculo Un cálculo es una estructura pura; un sistema de relaciones. Un cálculo se compone de lo siguiente: Un conjunto de elementos
Más detallesTema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I
Tema 4: Gramáticas independientes del contexto Teoría de autómatas y lenguajes formales I Bibliografía Hopcroft, J. E., Motwani, R., y Ullman, J. D. Introducción a la Teoría de Autómatas, Lenguajes y Computación.
Más detallesCapítulo 1: Fundamentos: Lógica y Demostraciones Clase 2: Lógica de Predicados y Métodos de Demostración
Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 2: Lógica de Predicados y Métodos de Demostración Matemática Discreta - CC3101 Profesor: Pablo Barceló P. Barceló Matemática Discreta - Cap. 1: Fundamentos:
Más detallesPropiedades de lenguajes independientes del contexto
Capítulo 12. Propiedades de lenguajes independientes del contexto 12.1. Identificación de lenguajes independientes del contexto Lema de bombeo. 12.2. Propiedades Cierre, Complemento de lenguajes, Sustitución,
Más detallesEspacios Vectoriales
Espacios Vectoriales Espacios Vectoriales Verónica Briceño V. noviembre 2013 Verónica Briceño V. () Espacios Vectoriales noviembre 2013 1 / 47 En esta Presentación... En esta Presentación veremos: Espacios
Más detallesLógica Proposicional. Sergio Stive Solano Sabié. Marzo de 2012
Lógica Proposicional Sergio Stive Solano Sabié Marzo de 2012 Lógica Proposicional Sergio Stive Solano Sabié Marzo de 2012 Proposiciones Definición 1.1 Una proposición (o declaración) es una oración declarativa
Más detallesInducción Matemática Conjuntos Funciones. Matemática Discreta. Agustín G. Bonifacio UNSL. Repaso de Inducción, Conjuntos y Funciones
UNSL Repaso de Inducción, y Inducción Matemática (Sección 1.7 del libro) Supongamos que queremos demostrar enunciados del siguiente tipo: P(n) : La suma de los primeros n números naturales es n(n+1)
Más detallesTema 4: Definición de funciones
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 Constantes como patrones Variables como
Más detallesCapítulo 2 Conjuntos. 2.1 Introducción. 2.2 Determinación de conjuntos. Definición:
Capítulo 2 Conjuntos 2.1 Introducción El concepto de conjunto, de singular importancia en la ciencia matemática y objeto de estudio de una de sus disciplinas más recientes, está presente, aunque en forma
Más detallesEl 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
Más detallesRelaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad
Estructuras Discretas Relaciones Definición: relación Relaciones Claudio Lobos, Jocelyn Simmonds clobos,jsimmond@inf.utfsm.cl Universidad Técnica Federico Santa María Estructuras Discretas INF 152 Sean
Más detallesMétodos de Inteligencia Artificial
Métodos de Inteligencia Artificial L. Enrique Sucar (INAOE) esucar@inaoep.mx ccc.inaoep.mx/esucar Tecnologías de Información UPAEP Contenido Lógica proposicional Lógica de predicados Inferencia en lógica
Más detallesManual de turbo pascal
Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de
Más detallesNota 2. Luis Sierra. Marzo del 2010
Nota 2 Luis Sierra Marzo del 2010 Cada mecanismo de definición de conjuntos que hemos comentado sugiere mecanismos para definir funciones y probar propiedades. Recordemos brevemente qué son las funciones
Más detallesEn general, un conjunto A se define seleccionando los elementos de un cierto conjunto U de referencia que cumplen una determinada propiedad.
nidad 3: Conjuntos 3.1 Introducción Georg Cantor [1845-1918] formuló de manera individual la teoría de conjuntos a finales del siglo XIX y principios del XX. Su objetivo era el de formalizar las matemáticas
Más detallesLógica. Matemática discreta. Matemática discreta. Lógica
Lógica Matemática discreta Lógica: rama de las matemáticas instrumento para representar el lenguaje natural proporciona un mecanismo de deducción 2 y de predicados Razonamientos Cálculo proposicional Cálculo
Más detallesDepartamento de Ingeniería Matemática - Universidad de Chile
1. Lógica Ingeniería Matemática FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS UNIVERSIDAD DE CHILE Introducción al Álgebra 08-1 Importante: Visita regularmente http://www.dim.uchile.cl/~algebra. Ahí encontrarás
Más detallesCapítulo 2: Inducción y recursión Clase 2: El principio de Inducción Fuerte
Capítulo 2: Inducción y recursión Clase 2: El principio de Inducción Fuerte Matemática Discreta - CC3101 Profesor: Pablo Barceló P. Barceló Matemática Discreta - Cap. 2: Inducción y Recursión 1 / 20 Motivación
Más detallesBenemérita Universidad Autónoma de Puebla
Tarea No. 1 Matemáticas Elementales Profesor Fco. Javier Robles Mendoza Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Lógica y Conjuntos 1. Considere las proposiciones
Más detallesEliminación de cuantificadores
Eliminación de cuantificadores Teorema Si una teoría admite eliminación de cuantificadores, y existe un algoritmo que construye ϕ sc a partir de ϕ, entonces es decidible. Cómo se demuestra este teorema?
Más detallesLenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1
Facultad de Ingeniería de Sistemas Lenguajes y Compiladores Análisis Sintáctico Parte I 1 Introducción El analizador sintáctico recibe una secuencia de tokens y decide si la secuencia está correcta o no.
Más detallesBases Formales de la Computación
Modal Bases Formales de la Computación Pontificia Universidad Javeriana 3 de abril de 2009 Modal LÓGICAS MODALES Contenido Modal 1 Modal 2 3 Qué es la lógica Modal? Modal Variedad de diferentes sistemas
Más detallesEstructuras Algebraicas
Tema 1 Estructuras Algebraicas Definición 1 Sea A un conjunto no vacío Una operación binaria (u operación interna) en A es una aplicación : A A A Es decir, tenemos una regla que a cada par de elementos
Más detallesCompiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.
Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Sintaxis Define la estructura del lenguaje Ejemplo: Jerarquía en
Más detallesGUÍA BÁSICA DE SCHEME v.4
Esta guía básica pretende ser una introducción elemental al lenguaje de programación Scheme. Se presenta como una guía de comienzo rápido de tal forma que permita conocer de una forma muy esquemática los
Más detallesLOS GRÁFICOS EXISTENCIALES DE PEIRCE EN LOS SISTEMAS ALFA 0. Yuri Alexander Poveda
I Jornada Peirce en rgentina 10 de septiembre de 2004 LOS GRÁFIOS EXISTENILES DE PEIRE EN LOS SISTEMS LF 0 Yuri lexander Poveda yapoveda@hotmail.com Las reglas deductivas de eliminación y de inserción
Más detalles520142: ALGEBRA y ALGEBRA LINEAL
520142: ALGEBRA y ALGEBRA LINEAL Segundo Semestre 2008, Universidad de Concepción CAPITULO 10: Espacios Vectoriales DEPARTAMENTO DE INGENIERIA MATEMATICA Facultad de Ciencias Físicas y Matemáticas 1 Definición
Más detallesLógica Proposicional (LP)
Lógica Proposicional (LP) Proposición Enunciado del que puede afirmarse si es verdadero o falso Oración declarativa Cuáles de las siguientes son proposiciones? ) Pedro es alto. 2) Juan es estudiante. 3)
Más detallesSemántica Denotacional
Semántica Denotacional Idea: El significado de un programa es la función denotada por el programa Componentes del metalenguaje para la definición semántica denotacional de un L.P.: Dominios sintácticos
Más detallesSISTEMA DE MONOMIOS PARA UN CUERPO RESIDUAL REAL CERRADO
SISTEMA DE MONOMIOS PARA UN CUERPO RESIDUAL REAL CERRADO Francisco Ugarte Guerra 1,2 Mayo, 2011 Resumen Para etender técnicas tipo Polígono de Newton a ecuaciones algebraicas con coeficientes en cuerpos
Más detallesEscenas de episodios anteriores
Clase 16/10/2013 Tomado y editado de los apuntes de Pedro Sánchez Terraf Escenas de episodios anteriores objetivo: estudiar formalmente el concepto de demostración matemática. caso de estudio: lenguaje
Más detallesConjuntos finitos y conjuntos numerables
Tema 3 Conjuntos finitos y conjuntos numerables En este tema vamos a usar los números naturales para contar los elementos de un conjunto, o dicho con mayor precisión, para definir los conjuntos finitos
Más detallesIntroducción a la Lógica y la Computación
Introducción a la Lógica y la Computación Parte III: Lenguajes y Autómatas Clase del 12 de Noviembre de 2014 Parte III: Lenguajes y Autómatas Introducción a la Lógica y la Computación 1/11 Lenguajes Regulares
Más detallesGeneración de Código Intermedio
Generación de Código Intermedio Programación II Margarita Álvarez Generación de código intermedio Con la generación de código intermedio se inicia la tarea de síntesis. Aunque un programa fuente se puede
Más detallesExpresiones Regulares y Derivadas Formales
y Derivadas Formales Las Derivadas Sucesivas. Universidad de Cantabria Esquema 1 2 3 Derivadas Sucesivas Recordemos que los lenguajes de los prefijos dan información sobre los lenguajes. Derivadas Sucesivas
Más detallesTema 9: Cálculo Deductivo
Facultad de Informática Grado en Ingeniería Informática Lógica PARTE 2: LÓGICA DE PRIMER ORDEN Tema 9: Cálculo Deductivo Profesor: Javier Bajo jbajo@fi.upm.es Madrid, España 24/10/2012 Introducción a la
Más detallesTema 1. Espacios Vectoriales Definición de Espacio Vectorial
Tema 1 Espacios Vectoriales. 1.1. Definición de Espacio Vectorial Notas 1.1.1. Denotaremos por N, Z, Q, R, C, a los conjuntos de los números Naturales, Enteros, Racionales, Reales y Complejos, respectivamente.
Más detallesAmpliación Matemática Discreta. Justo Peralta López
Justo Peralta López UNIVERSIDAD DE ALMERíA DEPARTAMENTO DE ÁGEBRA Y ANÁLISIS MATEMÁTICO 1 Introducción 2 Definición semántica de las proposiciones 3 Diagrama de valores de certeza 4 Evaluación de fórmulas.
Más detallesIntroducción a la Lógica y la Computación
Introducción a la Lógica y la Computación Parte III: Lenguajes y Autómatas Clase del 4 de Noviembre de 2015 Parte III: Lenguajes y Autómatas Introducción a la Lógica y la Computación 1/21 Lenguajes Formales
Más detallesMATEMÁTICAS BÁSICAS. 23 de febrero de Universidad Nacional de Colombia MATEMÁTICAS BÁSICAS
23 de febrero de 2009 Parte I Lógica Proposiciones Considere las siguientes frases Páseme el lápiz. 2 + 3 = 5 1 2 + 1 3 = 2 5 Qué hora es? En Bogotá todos los días llueve Yo estoy mintiendo Maradona fue
Más detallesTerminaremos el capítulo con una breve referencia a la teoría de cardinales.
TEMA 5. CARDINALES 241 Tema 5. Cardinales Terminaremos el capítulo con una breve referencia a la teoría de cardinales. Definición A.5.1. Diremos que el conjunto X tiene el mismo cardinal que el conjunto
Más detallesLógicas Modales Computacionales Clase # 5: Usos de Bisimulaciones
Lógicas Modales Computacionales Clase # 5: Usos de Bisimulaciones Carlos Areces / Daniel Gorín / Sergio Mera 2do Cuatrimestre 2006, Buenos Aires, Argentina Temario Propiedad de tree model. n-bisimulación.
Más detallesUNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE CIENCIAS CARRERA DE MATEMÁTICO CONJUNTOS Y LÓGICA
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE CIENCIAS CARRERA DE MATEMÁTICO CONJUNTOS Y LÓGICA SEMESTRE: Segundo a cuarto CLAVE: 0271 HORAS A LA SEMANA/SEMESTRE TEÓRICAS PRÁCTICAS CRÉDITOS 5/80
Más detallesCONCEPTOS BÁSICOS DE ESPACIOS VECTORIALES Alumno. Cristina Mª Méndez Suero
Fundamento Científico del Currículum de Matemáticas en Enseñanza Secundaria CONCEPTOS BÁSICOS DE ESPACIOS VECTORIALES Alumno. Cristina Mª Méndez Suero ESPACIOS VECTORIALES DEFINICIÓN... 1 PROPIEDADES DE
Más detallesLa Representación del Conocimiento CÓMO REPRESENTAR EL CONOCIMIENTO?
La Representación del Conocimiento CÓMO REPRESENTAR EL CONOCIMIENTO? TIPOS DE CONOCIMENTO El epistemología es el estudio del conocimiento, hay dos tipos esenciales llamados a priori y posteriori. Algoritmo
Más detallesLógica proposicional. Ivan Olmos Pineda
Lógica proposicional Ivan Olmos Pineda Introducción Originalmente, la lógica trataba con argumentos en el lenguaje natural es el siguiente argumento válido? Todos los hombres son mortales Sócrates es hombre
Más detallesTema 8: Tipos de datos. Sesión 24: Tipos de datos (1)
Tema 8: Tipos de datos Sesión 24: Tipos de datos (1) Referencias Programming Languages Pragmatics: Capítulo 7, apartados 7.1 (Type Systems) y 7.2 (Type Checking) Programming in Scala: Capítulo 5 (Basic
Más detallesESTRUCTURAS DE CONTROL
ESTRUCTURAS DE CONTROL En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras de control se puede: De
Más detallesencontramos dos enunciados. El primero (p) nos afirma que Pitágoras era griego y el segundo (q) que Pitágoras era geómetra.
Álgebra proposicional Introducción El ser humano, a través de su vida diaria, se comunica con sus semejantes a través de un lenguaje determinado (oral, escrito, etc.) por medio de frases u oraciones. Estas
Más detallesLenguajes y Gramáticas
Lenguajes y Gramáticas Teoría de Lenguajes Fernando Naranjo Introduccion Se desarrollan lenguajes de programación basados en el principio de gramática formal. Se crean maquinas cada vez mas sofisticadas
Más detallesIntroducció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
Más detallesUNIVERSIDAD MAYOR DE SAN SIMON FACULTAD DE CIENCIAS Y TECNOLOGÍA PLAN GLOBAL ALGEBRA I
UNIVERSIDAD MAYOR DE SAN SIMON FACULTAD DE CIENCIAS Y TECNOLOGÍA PLAN GLOBAL ALGEBRA I I. DATOS DE IDENTIFICACIÓN Nombre de la materia: ALGEBRA I Código: 2008019 Grupo: 4 Carga horaria: 2 TEÓRICAS Y DOS
Más detallesSemana03[1/17] Funciones. 16 de marzo de Funciones
Semana03[1/17] 16 de marzo de 2007 Introducción Semana03[2/17] Ya que conocemos el producto cartesiano A B entre dos conjuntos A y B, podemos definir entre ellos algún tipo de correspondencia. Es decir,
Más detallesEjercicios de Lógica Proposicional *
Ejercicios de Lógica Proposicional * FernandoRVelazquezQ@gmail.com Notación. El lenguaje proposicional que hemos definido, aquel que utiliza los cinco conectivos,,, y, se denota como L {,,,, }. Los términos
Más detallesSOBRE LOGICA MATEMATICA. Sandra M. Perilla-Monroy. Departamento de Ciencias Básicas, Universidad Santo Tomás, Bogotá, Colombia.
SOBRE LOGICA MATEMATICA Sandra M. Perilla-Monroy Departamento de Ciencias Básicas, Universidad Santo Tomás, Bogotá, Colombia. Resumen. sandraperilla@usantotomas.edu.co Carrera 9 No 51-11 Bogotá Colombia
Más detallesÍndice general. I Introducción a la Lógica 3
Índice general I Introducción a la Lógica 3 1 Demostraciones 5 1.1. Argumentos rodeados de agua....................... 5 1.1.1. Argumentando........................... 6 1.1.2. Formalizando el argumento....................
Más detallesGeometría de curvas y computación 4. Curvas de Hodógrafo Pitagórico
Geometría de curvas y computación 4. Curvas de Hodógrafo Pitagórico Fausto Ongay CIMAT, Gto., México Julio, 2012 Fausto Ongay (CIMAT) Julio, 2012 1 / 23 Curvas Paralelas ( Offset ) Fausto Ongay (CIMAT)
Más detallesMétodos directos para resolver sistemas de ecuaciones lineales
Métodos directos para resolver sistemas de ecuaciones lineales Problemas para examen Si en algún problema se pide calcular el número de flops (operaciones aritméticas con punto flotante), entonces en el
Más detallesDES: Ingeniería Programa(s) Educativo(s): Ingeniería de Software Tipo de materia: Obligatoria Clave de la materia: BC201 Semestre: 2
UNIVERSIDAD AUTÓNOMA DE CHIHUAHUA Clave: 08MSU0017H Clave: 08USU4053W FACULTAD DE INGENIERÍA PROGRAMA DEL CURSO: LÓGICA COMPUTACIONAL DES: Ingeniería Programa(s) Educativo(s): Ingeniería de Software Tipo
Más detallesIntroducción a la Matemática Discreta
Introducción a la Matemática Discreta Aritmética Entera Luisa María Camacho Camacho Introd. a la Matemática Discreta 1 / 36 Introducción a la Matemática Discreta Temario Tema 1. Teoría de Conjuntos. Tema
Más detallesIntroducción a la Lógica
Tema 0 Introducción a la Lógica En cualquier disciplina científica se necesita distinguir entre argumentos válidos y no válidos. Para ello, se utilizan, a menudo sin saberlo, las reglas de la lógica. Aquí
Más detallesLÓGICA COMPUTACIONAL
CURSO 2006-2007 OBJETIVOS Y TEMARIO 1. Presentación y objetivos. 2. Temario. Breve descripción. 1. Presentación y objetivos La asignatura «Lógica Computacional» presenta para este año un programa que está
Más detallesProblemas de Espacios Vectoriales
Problemas de Espacios Vectoriales 1. Qué condiciones tiene que cumplir un súbconjunto no vacío de un espacio vectorial para que sea un subespacio vectorial de este? Pon un ejemplo. Sean E un espacio vectorial
Más detallesCapítulo II. Pruebas en Matemáticas
Capítulo II Pruebas en Matemáticas Ahora nos concentramos en afirmaciones matemáticas y sus pruebas. Se encuentra que tratar de escribir pruebas justificando cada paso se vuelve rápidamente inmanejable,
Más detallesMotivaciones históricas en la construcción de lógicas multivaluadas. Susan Haack, Filosofía de las lógicas (1978), capítulo 11
Motivaciones históricas en la construcción de lógicas multivaluadas Susan Haack, Filosofía de las lógicas (1978), capítulo 11 Repaso Las lógicas multivaluadas son aquellas en donde hay más de dos valores
Más detallesLógica I (curso ) - 23 de enero de 2006 (modelo de respuestas)
Lógica I (curso 2005-06) - 23 de enero de 2006 (modelo de respuestas) 1. Definir un sistema formal... Para definir un sistema formal hay que especificar su lenguaje y su mecanismo deductivo. Llamemos H
Más detallesLímite superior y límite inferior de una sucesión
Límite superior y límite inferior de una sucesión Objetivos. Definir las nociones de los límites superior e inferior de una sucesión y estudiar sus propiedades básicas. Requisitos. Supremo e ínfimo de
Más detallesRudimentos de lógica
Rudimentos de lógica Eugenio Miranda Palacios 1. El método axiomático Matemáticas es el estudio de las relaciones entre ciertos objetos ideales como números, funciones y figuras geométricas. Estos objetos
Más detallesINDICE. XVII Prólogo a la edición en español. XXI 1. Calculo proporcional 1.1. Argumentos y proporciones lógicas
INDICE Prologo XVII Prólogo a la edición en español XXI 1. Calculo proporcional 1.1. Argumentos y proporciones lógicas 1 1.1.1. Introducción 1.1.2. Algunos argumentos lógicos importantes 2 1.1.3. Proposiciones
Más detallesInducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS. Números naturales. Inducción matemática
Inducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@ciencias.unam.mx
Más detalles1. Programas y funciones computables
Computabilidad 1 Índice 1. Programas y funciones computables 3 1.1. El lenguaje S........................................... 3 1.2. Programas de S......................................... 3 1.3. Macros...............................................
Más detalles