2. Asistentes de Pruebas para Lógicos y Matemáticos II 2. Asistentes de Pruebas para Lógicos y Matemáticos II. Cálculo de Predicados TPPSF
1. 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: , TPPSF
Cálculo de predicados Cálculo de predicados de primer orden: Cuantificación sobre variables de individuos únicamente : xnat. 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 ) TPPSF
Cálculo de predicados en Coq Cada símbolo de variable o constante tiene asociado su dominio y Set es el conjunto de todos los dominios nat : Set (nat es dominio) Z : Set (Z es un dominio) 0 : nat (0 es un elemento del dominio nat) f : natnat (f es un símbolo de función unaria entre naturales) g : nat nat nat (g es un símbolo de función binaria entre naturales) TPPSF
Representación de los predicados Un símbolo de predicado es una función proposicional sobre cierto dominio. La aridad del predicado está dada por la cantidad de argumentos de la función P : natProp (P es un símbolo de predicado unario sobre naturales) Q : nat (nat nat) Prop (Q es un símbolo de predicado binario, entre naturales y funciones de naturales en naturales) TPPSF
Cuantificadores Notación: (xU) se escribe en Coq (x:U) (xU) se escribe en Coq (EX x:U | ) Normas de parentización: El cuantificador universal y el implica asocian a la derecha, y tienen igual precedencia. Son más fuertes que los otros conectivos Ejemplo: (P: natProp) (P 0) ((x:nat) (P x) (P (S x)) )(x:nat) (P x) (f,g :natnat) ((x:nat) (f x)=(g x)) f=g TPPSF
Ejemplos Considerando las declaraciones: 0:nat S : natnat Le : nat nat Prop Min: nat (nat nat) Prop Algunas propiedades: (Le 0 (S 0)) ~ (Le (S 0) 0) (Min (S 0) S) (EX x:nat | (Min x S) (f: nat nat) ((x:nat)(Le 0 (f x))) (Min 0 f) TPPSF
Tácticas Cuantificador universal introducción x: b (x:)b Intro x el identificador x es opcional variantes: Intros, Intros x1,...xn TPPSF
Tácticas (II) Cuantificador universal (cont.) eliminación H: (x1:1) (x2:2)... (xn:n) g b (si g unifica con b con sustitución ) Apply H H: ... a1 a2 ... an TPPSF
Tácticas (III) Cuantificador universal (cont.) eliminación H: (x1:1) (x2:2)... (xn:n) g b (si g unifica con b pero Coq no puede resolver la unificacion y es necesario instanciar la hipótesis H con algunos de los valores t1: 1 ... tj: j) Apply (H t1 ... tj) H: ... j+1 j+2 ... an TPPSF
Tácticas (IV) Cuantificador existencial introducción (EX x:U | (x)) (t) Exists t (t debe ser un elemento de U) eliminación H: (EX x:U | (x)) b H: (EX x :U | (x)) (y: U) (y) b Elim H (y será una variable nueva que no ocurre b) TPPSF
2. Cálculo de predicados con igualdad reflexividad t=t Reflexivity Probado! simetría t=u u=t Symmetry transitividad t=w w=u t=u Transitivity w TPPSF
Reescritura H: a=b H: a=b [b/a] Rewrite H Reescribe todas las las ocurrencias de a por b En general: Rewrite term si term es un término del contexto con tipo a=b Variantes: Rewrite term in H1 Rewrite term, Rewrite term in H TPPSF
Reescritura (cont.) Replace a with b [a/b] a=b o bien: (cuando a=b se prueba trivialmente) TPPSF
Reescritura (cont.) H: a=b Reescritura condicional H: a=b (a, ..., a[j1] ,...a,... a[j2] ...a,... a[jk] ,...a) Pattern j1 ... jk in a. Rewrite H. H: a=b (a, ..., b ,...a,... b ...a,... b ,...a) TPPSF