5. Lógica proposicional: Conectivas y tablas de verdad

Ejemplos con Mathematica

1. Formas enunciativas y conectivas

Ejemplo 5.1.

Definir una función que actúe como la conectiva p ↔ q.

1) Usando la equivalencia lógica p ↔ q ⇔ (p → q) ∧ (q → p) podemos definir una función Sii[p, q]

Sii[p_, q_] := Implies[p, q]  &&  Implies[q, p]

Comprobamos que tiene la misma tabla de verdad que la conectiva ↔

Sii[True, True]
Sii[True, False]
Sii[False, True]
Sii[False, False]

2) Utilizando la orden condicional Which[], podemos definir una nueva función Sii2[] mediante:

Sii2[p_, q_] := Which[p == q,  True,  p != q,  False]

3) Otra forma sería negando la función Xor[]:

Sii3[p_, q_] :=  ! (Xor[p, q])

Ejemplo 5.2.

Definir la forma enunciativa A = (p ⋀ (q ⋁ (~r))) → (r ⋀ q) y calcular el valor de esta forma para la combinación de valores de verdad de las conectivas p = Verdad, q = Falso y r = Verdad y para la combinación p = Verdad, q = Verdad y r = Falso:

A  :=  
      Implies[p  &&  (q  ||  (! r)),  r  &&  q]

El valor de verdad para la combinación V F V lo calculamos usando el comando TrueQ[]

p = True;
q = False;
r = True;
TrueQ[A]

Y para la combinación V V F, la calcularemos directamente solicitando el valor de A:

p = True;
q = True;
r = False;
A

2. Tablas de verdad

Ejemplo 5.3.

Calcular la tabla de verdad de la forma enunciativa: ((Subscript[p, 1])↔ ((Subscript[p, 2])⋀(Subscript[p, 3]))).

Sii[a_, b_] := Implies[a, b]  &&  Implies[b, a];
n = 3;
p = Table[False, {t, n}];
expresion := 
        Sii[p[[1]], p[[2]]  &&  p[[3]]];
tabla = Table["F", {x, (2^n + 1)}, {y, n + 1}];
\(\(For[k = 1, k < n + 1, \(k++\), 
        tabla[\([1, k]\)] = \!\("p" \_ k\)];\)\)
tabla[[1, n + 1]] = "Exp";
\(\(For[i = 0, i < 2^n, \(i++\), 
	j = i; 
	
        For[f = n, 
          f > 0, \(f--\), 
		resto = Mod[j, 2]; 
		j = 
            Floor[j/2]; 
		If[resto == 0, p[\([f]\)] = True; \ 
            tabla[\([i + 2, f]\)] = "V", 
            p[\([f]\)] = False];
		\ ]; 
	
        If[TrueQ[expresion], 
          tabla[\([i + 2, n + 1]\)] = "V"];
	];\)\)
TableForm[tabla]

Ejemplo 5.4.

Calcular la tabla de verdad de la forma enunciativa ((p ↓ ( ~r)) | (q ⋀ r)).

Sii[a_, b_] := Implies[a, b]  &&  Implies[b, a];
n = 3; 
p = Table[False, {t, n}];
expresion :=  
        Nand[Nor[p[[1]], ! p[[3]]],  
          p[[2]] && p[[3]]];
tabla = Table["F", {x, (2^n + 1)}, {y, n + 1}];
\(\(For[k = 1, k < n + 1, \(k++\), 
        tabla[\([1, k]\)] = \ \!\("p" \_ k\)];\)\)
tabla[[1, n + 1]] = "Exp";
\(\(For[i = 0, i < 2^n, \(i++\), 
	j = i; 
	
        For[f = n, 
          f > 0, \(f--\), 
		resto = Mod[j, 2]; 
		j = 
            Floor[j/2]; 
		If[resto == 0, p[\([f]\)] = True; \ 
            tabla[\([i + 2, f]\)] = "V", 
            p[\([f]\)] = False];
		\ ]; 
	
        If[TrueQ[expresion], 
          tabla[\([i + 2, n + 1]\)] = "V"];
	];\)\)
TableForm[tabla]