1 0.1 Cálculo proposicional asistida En principio indicamos los elementos con los que desarrollaremos la lógica proposicional, y haremos ı́nfasis en la terminologı́a que es adecuada términos computaciones propias. Denotamos con p, q, r, . . . a las proposiciones (enunciados) y −→, ←→ ,∧, ∨ y ¬ son los conectivos (u operaciones) lógicos condicional, bicondicional, conjunción, disyunción y negación respectivamente. Una sucesión finita de proposiciones p1 , p2 , ...pk se llama una demostración (o deducción formal) si cada pi , es un axioma proposicional o resulta de fórmulas anteriores por la aplicación de las reglas inferencia. Una proposición es un teorema si aparece como la última proposición de una demoatración. En otras palabras una demotarción o prueba es una sucesión finita de proposiciones tal que cada una es una axioma o una consecuencia directa (deducción) de una de las proposición precedentes por medio de las reglas de inferencia. Un teorema es una proposición para la cual existe una prueba. Para cada operación lógica, hay dos tipos de reglas: Las reglas de introducción y de eliminación. Las reglas de introducción nos permiten inferir un operación logica. Las reglas de eliminación nos permiten deducir los factores de este operación. En lo que sigue estudiamos estas reglas para cada operación lógı́ca, y sus realizaciones en el programa Isabelle/Hol. Al final del capı́tulo se presenta una serie de ejercicios complementarios. 0.2 Condicionales Si p y q son proposiciones, su implicación, p −→ q, es otra proposición que es falso cuando p es verdadero y q es falso. La regla de eliminación de una implicación es llamado denominado Modus Ponens. Esta regla y su nombre de referencia es dada como sigue: mp p −→ q p q La regla de introdución de la condicional afirma que si tenemos p y q, podemos concluir p −→ q. Está regla y su referencia es la siguiente: impI p q p −→ q Cuando en un teorema la conclusión es una implicación, en su demostración se asume el antecedente de esa implicación como una hipótesis auxiliar que facilita su demotración, ya que es mejor tener más hipótesis que emplear y menos afirmaciones que demostrar. La validez de su uso es la siguiene equivalencia: p q −→ r es equivalente a p q r ←− Hipótesis auxiliar 2 Example 1 Demostrar: p −→ q, q −→ r ` p −→ r Proof. 1 2 3 4 5 6 p −→ q q −→ r p q r p −→ r hipótesis hipótesis asumimos hipétesis auixliar de 1 y 3 usando la regla mp de 2 y 4 usando la regla mp (fin de hip. aux) de 2 y 5 usando la regla impI En la demostración asistida por Isalbelle/Hol, la hipótesis auxuliar tiene un un principio y un final señalados con { y } respectivamente, como se puede observar en la siguiente demostración asistida lemma l2: assumes 1: "p −→q" and 2: "q −→r" shows "p −→r" proof{ assume 3: "p" have 4: "q" using 1 3 by (rule mp) have 5: "r" using 2 4 by (rule mp) } thus 6: "p−→r" by (rule impI) qed Los camandos empleados en la demostración asistida se explica a continuación: assumes and shows proof { assume have using by (rule . . . ) thus qed indica las hipótesis separa las hipótesis indica la conclusión (lo que hay que probar) inicia la demosteración para no usar el método por defecto asume la hipótesis auxiliar... hasta } establece un paso usando hechos en un paso indica la regla con la que se prueba un hecho, establece la conclusión (ası́, en consecuencia) termina la prueba Note que cuando empleamos una hipótesis auxiliar en la demotración, en la conclusión de la demotración utilizamos thus y no show. El cagado de la hipótesis auxiliar se puede realizar más de una vez. Por 3 ejemplos p q → (r −→ s) es equivalente a p q r −→ s es equivalente a p q r s Example 2 Demostrar: ` (p −→ q) → ((q −→ r) → (p −→ r)) Proof. 1 2 3 4 5 6 7 8 p −→ q q −→ r p q r p −→ r (q −→ r) −→ (p −→ r) (p −→ q) → ((q −→ r) → (p −→ r)) hipótesis auxiliar A1 hipótesis auxiliar A2 hipétesis auixliar A3 de 1 y 3 usando la regla de 2 y 4 usando la regla de 2 y 5 usando la regla de 2 y 6 usando la regla de 1 y 7 usando la regla mp mp (fin A1) impI (fin A2) impI (fin A3) impI La demostración asistida por Isabelle/Hol es: lemma l3: "( p −→q)−→((q−→r)−→(p−→r))" proof{ assume 1: "p−→q" { assume 2: "q−→r" { assume 3: "p" have 4: "q" using 1 3 by (rule mp) have 5: "r" using 2 4 by (rule mp)} hence 6: "p−→r" by (rule impI)} hence 7: "(q−→r)−→(p−→r)" by (rule impI)} thus 8: "(p−→q)−→((q−→r)−→(p−→r))" by (rule impI) qed El comando hence (por tanto) significa igualmente una conclusión, pero con una jeraruı́a menor que thus y show. Los comandos utilizados y sus significados en la demostración asistida anterior es la siguiente: proof { assume have using by (rule . . . ) hence thus qed inicia la demostración para no usar el método por defecto (p.e. auto) asume la hipótesis auxiliar... hasta } establece un paso usando hechos en un paso indica la regla con la que se prueba un hecho, estable una conclusión parcial de una hipótesis aux. establece la conclusión (ası́, en consecuencia) termina la prueba 4 0.3 0.4 Conjunción Una regla de introducción nos dice cuándo podemos inferir una fórmula que contiene un sı́mbolo lógico especı́fico. En el caso de la regla de introducción de la conjunción dice que si tenemos p y si tenemos q, entonces tenemos p ∧ q. Usualmente se expresa ası́: conjI p q p∧q Ası́ para demostrar p ∧ q, debemos demostrar p y también q. Las reglas de eliminación funcionan en la dirección opuesta a las reglas de introducción. En el caso de la conjunción, existen dos reglas de este tipo. De p ∧ q inferimos p. también, de p ∧ q inferimos q: conjunct1 p∧q p , conjunct2 p∧q q es decir, de p ∧ q podemos eliminar la conjunción y inferir p o bien q. Estas referencias y las reglas son explicados cuando se coloca el cursor sobre los siguientes: thm conjI thm conjunct1 thm conjunct2 En el siguiente ejemplo aparecen conjunciones, y se desea demostrar una conjunción. Para ellos debemos realizar eliminaciones de la conjunción y para estabecer la conclusión debemos aplicar la regla introdución de la conjunción. Dearemos dos pruebas, la primera una demotarción natural, luego uan demostración asistenda por un ordenador realizado en Isabelle/Hol Example 3 Demostrar: p ∧ q, r ∧ s ` p ∧ s Proof. 1 2 3 4 5 p∧q r∧s p s p∧s hipótesis hipótesis de 1 usando la regla de eliminación de la conjunción de 2 usando la regla de eliminación de la conjunción de 4 regla de introdución de la conunción La demostración asistida por Isalbelle/Hol es la siguiente: lemma l1: assumes 1:"p∧q" and 5 2:"r∧s" shows "p∧s" proofhave 3: "p" using 1 by (rule conjunct1) have 4: "s" using 2 by (rule conjunct2) show 5: "p∧s" using 3 4 by (rule conjI) qed Note que en la demostración, Isalbelle/Hol sigue el razonamiento natural con ciertos comandos que explicamos a continuación: assumes and shows proof have using by (rule . . . ) show qed indica las hipótesis separa las hipótesis indica la conclusión (lo que hay que probar) inicia la demosteración para no usar el método por defecto (p.e. auto) establece un paso usando hechos en un paso indica la regla con la que se prueba un hecho, establece la conclusión termina la prueba En cada paso de la demotración asistida, Isabelle/Hol indica con enunciados de color rojosi se comete un error de escritura, mas uso de un comando o si la deotración esta incompleta. Cuando se coloca el comando qed hay dos resuldados posibles. La demotarción esta bien realizada, en ess caso Isabelle/Hol coloca cero mensajes de error, y si no está completa de demotración entonces Isabelle/Hol sigue indicando mensajes de no estar completa de demotración. 0.5 Ahora considere la disyunción. Hay dos reglas de introducción, que se asemejan a formas invertidas de las reglas de eliminación de conjunción: p p∨q q p∨q Para la regla de eliminación de disyunción, es la demostración dos casos. p∨q p −→ r q −→ r r Podemos suponer que p es verdadero y probar r y luego asumir q verdadero y probar r por segunda vez. Tenemos que demostrar R dos veces, bajo diferentes supuestos. Las suposiciones son locales para estas subpruebas y no son visibles en ningún otro lugar.