Capitulo 6.nb 1 6. Lógica proposicional: Tautologías, contradicciones, formas normales, equivalencias e implicaciones lógicas y argumentaciones Ejemplos con Mathematica 1. Tautología y contradicción ü Ejemplo 6.1. Comprobar si la forma enunciativa: A: ( p1 Ó p2 ) Ô ( p3 Ó p4 ) es tautología o contradicción. Capitulo 6.nb n = 4; tautologia = True; p = Table@False, 8t, n<D; expresion := Hp@@1DD »» p@@2DDL && Hp@@3DD »» p@@4DDL; For@i = 0, i < 2 ^ n, i ++, j = i; For@f = n, f > 0, f −−, resto = Mod@j, 2D; j = Floor@j ê 2D; If@resto 0, p@@fDD = True, p@@fDD = FalseD; D; If@TrueQ@expresionD, Null, tautologia = FalseD; D; If@tautologia, Print@"La forma enunciativa es una tautología"D, Print@"La forma enunciativa no es una tautología"DD La forma enunciativa no es una tautología n = 4; contradiccion = True; p = Table@False, 8t, n<D; expresion := Hp@@1DD »» p@@2DDL && Hp@@3DD »» p@@4DDL; For@i = 0, i < 2 ^ n, i ++, j = i; For@f = n, f > 0, f −−, resto = Mod@j, 2D; j = Floor@j ê 2D; If@resto 0, p@@fDD = True, p@@fDD = FalseD; D; If@TrueQ@expresionD, contradiccion = FalseD; D; If@contradiccion, Print@"La forma enunciativa es una contradicción"D, Print@"La forma enunciativa no es una contradicción"DD La forma enunciativa no es una contradicción 2. Formas normales ü Ejemplo 6.2. Calcular las formas normales de la forma enunciativa A: ( p1 Ó p2 ) Ø p3 . 2 Capitulo 6.nb n = 3; cadena = ""; cadena2 = ""; cad = ""; cad2 = ""; contradiccion = True; tautologia = True; p = Table@False, 8t, n<D; expresion := Implies@Hp@@1DD »» p@@2DDL, p@@3DDD; For@i = 0, i < 2 ^ n, i ++, j = i; cad = ""; cad2 = ""; For@f = n, f > 0, f −−, resto = Mod@j, 2D; j = Floor@j ê 2D; If@resto 0, p@@fDD = True; If@f n, cad = StringJoin@"p", ToString@fD, cadD, cad = StringJoin@"p", ToString@fD, " fl ", cadDD; If@f n, cad2 = StringJoin@"H∼p", ToString@fD, "L", cad2D, cad2 = StringJoin@"H∼p", ToString@fD, "L", " fi ", cad2DD;, p@@fDD = False; If@f n, cad = StringJoin@"H∼p", ToString@fD, "L", cadD, cad = StringJoin@"H∼p", ToString@fD, "L", " fl ", cadDD; If@f n, cad2 = StringJoin@"p", ToString@fD, cad2D, cad2 = StringJoin@"p", ToString@fD, " fi ", cad2DD;D;D; If@TrueQ@expresionD, If@cadena "", cadena = StringJoin@cadena, "H", cad, "L"D, cadena = StringJoin@cadena, " fi H", cad, "L"DD; contradiccion = False;, If@cadena2 "", cadena2 = StringJoin@cadena2, "H", cad2, "L"D, cadena2 = StringJoin@cadena2, " fl H", cad2, "L"DD; tautologia = False;D;D; If@contradiccion, Print@"Es una contradicción."D, Print@ "No es contradicción y la forma normal disyuntiva es: ", cadenaDD; If@tautologia, Print@"Es una tautología."D, Print@"No es tautología y la forma normal conmutativa es: ", cadena2DD; No es contradicción y la forma normal disyuntiva es: Hp1 fl p2 fl p3L fi Hp1 fl H∼p2L fl p3L fi HH∼p1L fl p2 fl p3L fi HH∼p1L fl H∼p2L fl p3L fi HH∼p1L fl H∼p2L fl H∼p3LL No es tautología y la forma normal conmutativa es: HH∼p1L fi H∼p2L fi p3L fl HH∼p1L fi p2 fi p3L fl Hp1 fi H∼p2L fi p3L ü Ejemplo 6.3. Calcular una forma enunciativa restringida equivalente a la forma enunciativa A: p1 Ø p2 . 3 Capitulo 6.nb Bastará con dar la forma normal disyuntiva o la forma normal conjuntiva de A para tener tal forma enunciativa restringida. n = 2; cadena = ""; cadena2 = ""; cad = ""; cad2 = ""; contradiccion = True; tautologia = True; p = Table@False, 8t, n<D; expresion := Implies@p@@1DD, p@@2DDD; For@i = 0, i < 2 ^ n, i ++, j = i; cad = ""; cad2 = ""; For@f = n, f > 0, f −−, resto = Mod@j, 2D; j = Floor@j ê 2D; If@resto 0, p@@fDD = True; If@f n, cad = StringJoin@"p", ToString@fD, cadD, cad = StringJoin@"p", ToString@fD, " fl ", cadDD; If@f n, cad2 = StringJoin@"H∼p", ToString@fD, "L", cad2D, cad2 = StringJoin@"H∼p", ToString@fD, "L", " fi ", cad2DD;, p@@fDD = False; If@f n, cad = StringJoin@"H∼p", ToString@fD, "L", cadD, cad = StringJoin@"H∼p", ToString@fD, "L", " fl ", cadDD; If@f n, cad2 = StringJoin@"p", ToString@fD, cad2D, cad2 = StringJoin@"p", ToString@fD, " fi ", cad2DD;D;D; If@TrueQ@expresionD, If@cadena "", cadena = StringJoin@cadena, "H", cad, "L"D, cadena = StringJoin@cadena, " fi H", cad, "L"DD; contradiccion = False;, If@cadena2 "", cadena2 = StringJoin@cadena2, "H", cad2, "L"D, cadena2 = StringJoin@cadena2, " fl H", cad2, "L"DD; tautologia = False;D;D; If@contradiccion, Print@"Es una contradicción."D, Print@ "No es contradicción y la forma normal disyuntiva es: ", cadenaDD; If@tautologia, Print@"Es una tautología."D, Print@"No es tautología y la forma normal conmutativa es: ", cadena2DD; No es contradicción y la forma normal disyuntiva es: Hp1 fl p2L fi HH∼p1L fl p2L fi HH∼p1L fl H∼p2LL No es tautología y la forma normal conmutativa es: HH∼p1L fi p2L Por tanto, una solución para este problema sería la forma enunciativa restringida ( p1 Ó (~ p2 )). 4 Capitulo 6.nb ü Ejemplo 6.4. Aplicamos el procedimiento logica a la forma enunciativa ((pØq)Ø(~r)) logica := Module@8tabla, cadena, cadena2, cad, cad2, contradiccion, tautologia<, tabla = Table@"F", 8x, H2 ^ n + 1L<, 8y, n + 1<D; For@k = 1, k < n + 1, k ++, tabla@@1, kDD = \!\H"p" \_ k\LD; tabla@@1, n + 1DD = "Exp"; For@i = 0, i < 2 ^ n, i ++, j = i; For@f = n, f > 0, f −−, resto = Mod@j, 2D; j = Floor@j ê 2D; If@resto 0, p@@fDD = True; tabla@@i + 2, fDD = "V", p@@fDD = FalseD;D; If@TrueQ@expresionD, tabla@@i + 2, n + 1DD = "V"D;D; Print@"La tabla de verdad es: "D; Print@TableForm@tablaDD; cadena = ""; cadena2 = ""; cad = ""; cad2 = ""; contradiccion = True; tautologia = True; For@i = 0, i < 2 ^ n, i ++, j = i; cad = ""; cad2 = ""; For@f = n, f > 0, f −−, resto = Mod@j, 2D; j = Floor@j ê 2D; If@resto 0, p@@fDD = True; If@f n, cad = StringJoin@"p", ToString@fD, cadD, cad = StringJoin@"p", ToString@fD, " fl ", cadDD; If@f n, cad2 = StringJoin@"H∼p", ToString@fD, "L", cad2D, cad2 = StringJoin@"H∼p", ToString@fD, "L", " fi ", cad2DD;, p@@fDD = False; If@f n, cad = StringJoin@"H∼p", ToString@fD, "L", cadD, cad = StringJoin@"H∼p", ToString@fD, "L", " fl ", cadDD; If@f n, cad2 = StringJoin@"p", ToString@fD, cad2D, cad2 = StringJoin@"p", ToString@fD, " fi ", cad2DD;D;D; If@TrueQ@expresionD, If@cadena "", cadena = StringJoin@cadena, "H", cad, "L"D, cadena = StringJoin@cadena, " fi H", cad, "L"DD; contradiccion = False;, If@cadena2 "", cadena2 = StringJoin@cadena2, "H", cad2, "L"D, cadena2 = StringJoin@cadena2, " fl H", cad2, "L"DD; tautologia = False;D;D; If@contradiccion, Print@"Es una contradicción."D, Print@ "No es contradicción y la forma normal disyuntiva es: ", cadenaDD; If@tautologia, Print@"Es una tautología."D, Print@"No es tautología y la forma normal conjuntiva es: ", cadena2DDD 5 Capitulo 6.nb 6 n = 3; p = Table@False, 8t, n<D; expresion := Implies@Implies@p@@1DD, p@@2DDD, ! p@@3DDD logica La tabla de verdad es: p1 V V V V F F F F p2 V V F F V V F F p3 V F V F V F V F Exp F V V V F V F V No es contradicción y la forma normal disyuntiva es: Hp1 fl p2 fl H∼p3LL fi Hp1 fl H∼p2L fl p3L fi Hp1 fl H∼p2L fl H∼p3LL fi HH∼p1L fl p2 fl H∼p3LL fi HH∼p1L fl H∼p2L fl H∼p3LL No es tautología y la forma normal conjuntiva es: HH∼p1L fi H∼p2L fi H∼p3LL fl Hp1 fi H∼p2L fi H∼p3LL fl Hp1 fi p2 fi H∼p3LL 3. Equivalencias lógicas e implicaciones lógicas ü Ejemplo 6.5. Comprobar que las siguientes formas enunciativas son equivalentes: a) (p Ø q) b) ((~q) Ø (~p)) Capitulo 6.nb Sii@a_, b_D := Implies@a, bD && Implies@b, aD; n = 2; tautologia = True; p = Table@False, 8t, n<D; expresion := Sii@Implies@p@@1DD, p@@2DDD, Implies@! p@@2DD, ! p@@1DDDD; For@i = 0, i < 2 ^ n, i ++, j = i; For@f = n, f > 0, f −−, resto = Mod@j, 2D; j = Floor@j ê 2D; If@resto 0, p@@fDD = True, p@@fDD = FalseD;D; If@TrueQ@expresionD, Null, tautologia = FalseD;D; If@tautologia, Print@"La forma enunciativa es una tautología"D, Print@"La forma enunciativa no es una tautología"DD La forma enunciativa es una tautología Por tanto, la forma enunciativa ((p Ø q) ¨ ((~ q) Ø (~ p))) es una tautología de lo que deducimos que (p Ø q) es lógicamente equivalente a ((~ q) Ø (~ p)). 4. Argumentaciones válidas ü Ejemplo 6.6. Estudiar la validez o invalidez de la siguiente argumentación: ((p Ô q) Ø r), q ; \ (p Ø r) Sólo tenemos que ver si la forma enunciativa (((pÔq)Ør)Ôq)Ø(pØr) es una tautología 7 Capitulo 6.nb n = 3; tautologia = True; p = Table@False, 8t, n<D; expresion := Implies@ Implies@p@@1DD && p@@2DD, p@@3DDD && p@@2DD, Implies@p@@1DD, p@@3DDDD; For@i = 0, i < 2 ^ n, i ++, j = i; For@f = n, f > 0, f −−, resto = Mod@j, 2D; j = Floor@j ê 2D; If@resto 0, p@@fDD = True, p@@fDD = FalseD; D; If@TrueQ@expresionD, Null, tautologia = FalseD; D; If@tautologia, Print@"La forma enunciativa es una tautología"D, Print@"La forma enunciativa no es una tautología"DD La forma enunciativa es una tautología Por tanto, la forma argumentativa es válida. ü Ejemplo 6.7. Cierta empresa necesita incrementar su plantilla con un nuevo miembro que pueda programar en Mathematica o que sepa programación. Además si sabe programación entonces puede programar en Mathematica. ¿Podemos deducir de lo anterior que dicha empresa necesita una persona que sepa utilizar el programa Mathematica? En realidad, este enunciado se puede estudiar a través de una argumentación con premisas A1 : p Ó q, A2 : q Ø p y conclusión A: p. La respuesta a la pregunta planteada será afirmativa si la argumentación es valida y en otro caso será negativa. 8 Capitulo 6.nb n = 2; tautologia = True; p = Table@False, 8t, n<D; expresion := Implies@Hp@@1DD »» p@@2DDL && Implies@p@@2DD, p@@1DDD, p@@1DDD; For@i = 0, i < 2 ^ n, i ++, j = i; For@f = n, f > 0, f −−, resto = Mod@j, 2D; j = Floor@j ê 2D; If@resto 0, p@@fDD = True, p@@fDD = FalseD;D; If@TrueQ@expresionD, Null, tautologia = FalseD;D; If@tautologia, Print@"La forma enunciativa es una tautología"D, Print@"La forma enunciativa no es una tautología"DD La forma enunciativa es una tautología Por tanto, la forma argumentativa es válida y efectivamente la empresa necesita una persona que sepa utilizar el programa Mathematica. 9