Razonamiento deductivo con pseudocódigo

Razonamiento deductivo con pseudocódigo

A comienzos de año asistí a un curso de pensamiento científico a cargo del docente Carlos Rosendo Quiroga de la Universidad de Buenos Aires y uno de los temas tratados fue el de razonamiento deductivo. Estudiamos cuatro formas de razonamiento: modus ponens, modus tollens, falacia de afirmación del consecuente y falacia de negación del antecedente. Este artículo se propone analizar la verdad de las conclusiones que se obtienen, al aplicar cada uno de los razonamientos anteriores en escenarios con diferentes premisas, basándonos en un breve pseudocódigo como ejemplo.

I. Conceptos iniciales

1. Proposición

Una proposición es una expresión en lenguaje matemático o natural que puede clasificarse como verdadera o falsa. Podría ser una expresión como "4 > 5" (en este caso, resultaría ser falso) o también podría ser una expresión como "hoy está lloviendo" (que puede ser verdadero o falso dependiendo de si hoy está lloviendo o no). No son proposiciones las expresiones que son mandatos, deseos, interrogaciones o exclamaciones.

En lógica simbólica, a modo de abstracción, se suelen utilizar letras como p y q para representar a las proposiciones. Por ejemplo, podríamos proponer que p sea "4 > 5" y que q sea "hoy está lloviendo", de modo que la próxima vez que queramos referirnos a la proposición "4 > 5" u "hoy está lloviendo", directamente usaríamos las letras p y q respectivamente.

Si se quisiera negar el valor de verdad de una proposición p, en lógica se expresaría ¬ p. La negación del valor de verdad de p implica que si p era verdadero, ¬ p será falso y si p era falso, ¬ p será verdadero. En lenguaje natural o en pseudocódigo, la negación de p se puede expresar como "no p" o “no se cumple p”.

2. Razonamiento

Un razonamiento válido garantiza que si las premisas son verdaderas, también lo será la conclusión.

Un razonamiento supone un proceso mental en el que, a través de la aplicación de la lógica, se puede arribar a una conclusión a partir del análisis de unas proposiciones. En el contexto de un razonamiento, a las proposiciones se las llama premisas.

Un razonamiento válido garantiza que si las premisas son verdaderas, también lo será la conclusión. Por el contrario, un razonamiento inválido es aquel en el que partiendo de premisas verdaderas se puede llegar a una conclusión falsa. Esto último es lo que va a ocurrir con las falacias, donde si bien el razonamiento parecerá ser válido, más adelante veremos que no lo es.

3. Implicación

Los razonamientos que veremos posteriormente en la sección II hacen uso de la implicación, por lo tanto, resulta oportuno hacer un repaso. Para decir que p implica q, en lógica veremos que se utiliza la notación (pq). La implicación entre el antecedente p y el consecuente q supone que "si p es verdadero entonces q debe ser verdadero". Se puede significar lo mismo con decir "si p entonces q".

Sobre la implicación, (Pons et al., 2017) afirma que "intuitivamente podemos considerarla como un contrato" (p. 24). Para que el contrato sea verdadero, si se cumple el antecedente debe cumplirse el consecuente. Es decir, para que (pq) sea verdadero, si p es verdadero entonces q tiene que ser verdadero. En cambio, el contrato será falso si se cumple el antecedente y no el consecuente. Es decir, (pq) será falso si p es verdadero y q es falso.

Tabla de verdad de la implicación.

¿Y qué ocurre cuando el antecedente p es falso? Como señalan los autores previamente citados, "cuando el antecedente p no se cumple, el consecuente q puede tanto cumplirse como no cumplirse, y en ambos casos el contrato no se ha quebrado y podemos considerarlo verdadero". Es decir, el contrato sólo define cómo debe ser el valor de q cuando p es verdadero, pero no dice nada de cómo debe ser el valor de q cuando p es falso. En otras palabras, en el caso de que p sea verdadero, tenemos una regla explícita para determinar si se está rompiendo el contrato, pero no así para el caso de que p sea falso. Como no hay regla a seguir para aquella última situación en la que p es falso, no hay forma de probar que el contrato se esté quebrando y, por tanto, tenemos que asumir que el mismo sigue estando vigente, aun con q siendo verdadero o q siendo falso.

Por ejemplo, el enunciado "si Juan está libre de deudas, entonces le dan crédito" se simboliza con (pq), siendo p igual a "Juan está libre de deudas" y q igual a "le dan crédito". Si es cierto que Juan está desendeudado, entonces le tienen que dar crédito para que se mantenga el contrato y así tendremos que (pq) es verdadero. Si no le dan crédito pese a estar libre de deudas, se quiebra el contrato establecido en (pq), resultando dicha implicación falsa. Y en el caso de que Juan sea deudor, pueden o no darle crédito y sin que aquello implique una ruptura del contrato. Es decir, ya sea que le den crédito o no, en ambos casos (pq) seguirá siendo verdadero, ya que no hay ninguna prohibición explícita de no poder dar crédito a un deudor. Distinta sería la situación si se expresara: "le dan crédito si y sólo si Juan está libre de deudas", pero eso ya sería una doble implicación (también conocida como bicondicional) que escapa del alcance de este artículo.

4. Pseudocódigo

El pseudocódigo busca ser un balance entre la comprensibilidad -y a veces ambigüedad- del idioma y la precisión del código que se usa en la programación de computadoras (Nishimura, 2003). Está pensado con la idea de que sea fácil de leer, por eso usa palabras generalmente en inglés o español, pero sin ser excesivamente verborrágico. Por ejemplo, en lenguaje natural alguien podría enunciar: "en el caso de que el radicando sea menor que cero, se deberán escribir las palabras 'Math ERROR' ", mientras que en pseudocódigo se simplificaría a: "si radicando < 0 entonces escribir 'Math ERROR' ".

Dos condiciones separadas. La primera evalúa si el radicando es menor que cero y la segunda si el divisor es igual a cero. De cumplirse cualquiera de esas condiciones se muestra "Math ERROR"​.

El pseudocódigo de arriba será utilizado para la elaboración de los distintos razonamientos que se presentarán a continuación. Como se ve, sólo hay un par de condiciones y en caso de que cada condición se cumpla, se escribirán las palabras "Math ERROR". Los puntos suspensivos sólo son una invitación a suponer que, tanto en el bloque 1 y 2, se realizarán otras acciones luego de mostrado el mensaje de error. Acciones que no vienen al caso de estudio.

II. Razonamiento deductivo

1. Modus Ponens o Afirmación del Antecedente (razonamiento válido)

Premisa 1: si p entonces q.

Premisa 2: p.

Conclusión: q.

El razonamiento por modus ponens dice que si p implica q (premisa 1) y se tiene que p es verdadero (premisa 2), entonces q debe ser verdadero (conclusión). Esa conclusión a la que se arriba se verifica por tabla de verdad. En la misma se aprecia que cuando las premisas 1 y 2 son verdaderas, la conclusión también lo es. Se trata de un razonamiento válido, ya que de premisas verdaderas se llega a una conclusión verdadera.

Tabla de verdad del modus ponens.

Consideremos que p es la proposición lógica que será verdadera de cumplirse la primera condición evaluada en el pseudocódigo (radicando < 0). Y q es la proposición lógica que sólo es verdadera cuando el código en el bloque 1 es ejecutado.

Supongamos que el radicando es -1. En ese caso, se satisface la primera condición, ya que es cierto que radicando es menor que cero (p es verdadero). De modo que podemos garantizar que el bloque 1 será ejecutado (q será verdadero), así que la frase "Math ERROR" será mostrada. Es decir, dado que consideramos un escenario de prueba donde el radicando es -1, podemos esperar ver la leyenda "Math ERROR". Es un razonamiento válido y se le conoce como modus ponens o afirmación del antecedente.

2. Modus Tollens o Negación del Consecuente (razonamiento válido)

Premisa 1: si p entonces q.

Premisa 2: no q.

Conclusión: no p.

El razonamiento por modus tollens dice que si p implica q (premisa 1) y se tiene que no se cumple q (premisa 2), entonces no se debe cumplir p (conclusión). Esa conclusión a la que se arriba se verifica por tabla de verdad. En la misma se aprecia que cuando las premisas 1 y 2 son verdaderas, la conclusión también lo es. Se trata de un razonamiento válido, ya que de premisas verdaderas se llega a una conclusión verdadera.

Tabla de verdad del modus tollens.

Consideremos que p es la proposición lógica que será verdadera de cumplirse la segunda condición (divisor = 0). Y q es la proposición lógica que sólo es verdadera cuando el código en el bloque 2 es ejecutado.

Si el código en el bloque 2 no es ejecutado (q es falso), podemos estar seguros que el divisor no es cero. Veamos: en la condición se evalúa si el divisor resulta ser cero. Si el divisor es cero, entonces con certeza el código en el bloque 2 se ejecutará, haciendo así que aparezca "Math ERROR". Si en cambio el bloque 2 no se ejecuta, podemos estar seguros que la condición no se cumplió (p es falso) y eso sólo es posible si el divisor no es cero. Es un razonamiento válido y se le conoce como modus tollens o negación del consecuente.

3. Falacia de Afirmación del Consecuente (razonamiento inválido)

Premisa 1: si p entonces q.

Premisa 2: q.

Conclusión: p.

La falacia de afirmación del consecuente dice que si p implica q (premisa 1) y se tiene que q es verdadero (premisa 2), entonces p debe ser verdadero (conclusión). Sin embargo, en la tabla de verdad se aprecia que cuando las premisas 1 y 2 son verdaderas, la conclusión puede ser tanto verdadera como falsa. Se trata de un razonamiento inválido, ya que de premisas verdaderas es posible llegar a una conclusión falsa.

Tabla de verdad de la falacia de afirmación del consecuente.

Consideremos que p es la proposición lógica que será verdadera de cumplirse la segunda condición (divisor = 0) y q, a diferencia de antes, es la proposición lógica usada para determinar si se escribió la leyenda "Math ERROR".

Ahora supongamos que observamos que aparece escrito "Math ERROR" una sóla vez. Podemos decir en ese caso que q es verdadero y quizás estemos tentados en decir que entonces p también debe ser verdadero, pero ahí está la falacia. ¿Realmente podemos tener certeza del valor de verdad de p con sólo saber que q es verdadero? Ocurre que, de acuerdo al pseudocódigo, hay dos condiciones que de cumplirse llevan a que se muestre el mensaje, es decir, a que q sea verdadero. Una de las condiciones es que el divisor sea igual a cero y la otra es que el radicando sea menor que cero. La pregunta que surge es, ¿se cumplió la primera o la segunda condición? La respuesta es que no lo sabemos, ya que no podemos asegurar el valor de verdad de p con sólo saber que q es verdadero. Por ejemplo, en una calculadora científica aparecería escrito "Math ERROR" si se intentara dividir por cero o calcular el logaritmo o raíz cuadrada de un número negativo. Hay varias situaciones que llevan a que se muestre el mismo mensaje, por lo tanto no es posible a partir del mensaje concluir qué situación fue la que ocurrió.

En definitiva, si dijéramos que el divisor es cero porque se mostró "Math ERROR", a veces podríamos tener razón, pero otras veces no. La realidad es que estaríamos incurriendo en un razonamiento inválido, precisamente en una falacia de afirmación del consecuente.

4. Falacia de Negación del Antecedente (razonamiento inválido)

Premisa 1: si p entonces q.

Premisa 2: no p.

Conclusión: no q.

La falacia de negación del antecedente dice que si p implica q (premisa 1) y se tiene que no se cumple p (premisa 2), entonces no se debe cumplir q (conclusión). Sin embargo, en la tabla de verdad se aprecia que cuando las premisas 1 y 2 son verdaderas, la conclusión puede ser tanto verdadera como falsa. Se trata de un razonamiento inválido, ya que de premisas verdaderas es posible llegar a una conclusión falsa.

Tabla de verdad de la falacia de negación del antecedente.

Consideremos que p es la proposición lógica que será verdadera de cumplirse la primera condición (radicando < 0) y q es, nuevamente, la proposición lógica usada para determinar si se mostró la leyenda "Math ERROR".

Si p es falso, no significa que q también lo sea. Podrías pensar que si el radicando es mayor o igual que cero, la primera condición no se cumpliría (p sería falso), entonces no se mostraría "Math ERROR" (q sería falso). Pero eso es una falacia, ya que aun así podría mostrarse ese mensaje, por ejemplo, si se cumpliera la segunda condición (divisor = 0). Por esa razón es un razonamiento inválido y a esta forma de razonamiento se la conoce como falacia de negación del antecedente.

III. Conclusiones

Vimos que una proposición es una expresión que puede ser verdadera o falsa. Y que un razonamiento es un proceso mediante el cual se deduce una conclusión, partiendo del análisis de unas premisas (proposiciones).

También aprendimos que un razonamiento será válido si de premisas verdaderas llegamos a una conclusión verdadera y será inválido si de premisas verdaderas se llega a una conclusión falsa.

Estudiamos en profundidad la implicación o condicional y la entendimos como un contrato entre dos proposiciones, una antecedente y otra consecuente. Dijimos que el contrato sólo se rompía cuando no se cumplía el consecuente pese a ser verdadero el antecedente y vimos un ejemplo de aquello.

A partir de un pseudocódigo y cuatro escenarios diferentes, elaboramos razonamientos con modus ponens, modus tollens, falacia de afirmación del consecuente y falacia de negación del antecedente. Explicamos mediante tabla de verdad y con ejemplos por qué los primeros dos razonamientos eran válidos y no así las falacias.

IV. Referencias y bibliografía

Pons C., Rosenfeld R., Smith C. (2017). Lógica para informática. Editorial de la Universidad de la Plata.

Luis Hurtado Mondoñedo (2017). Revisión de las definiciones de proposición y enunciado en su relación con las matemáticas. Rev. Digit. Invest. Docencia Univ. vol.11 no.1 Lima ene./jun. 2017. Recuperado el 16 de julio de 2022 de: http://scielo.sld.cu/scielo.php?script=sci_arttext&pid=S1684-18592021000100015&lng=es&tlng=es.

Naomi Nishimura (2003). Pseudocode. Introduction to Algorithms, Computer Science Department, Cornell University. Recuperado el 17 de julio de 2022 de: http://www.cs.cornell.edu/courses/cs482/2003su/handouts/pseudocode.pdf


Gracias Carlos Quiroga y Gustavo Siciliano por sus opiniones cuando este artículo todavía era un borrador.

Javier Vescio

Odoo Python Dev | CoderLatino Founder | English B2 First | Bachelor's Degree in Systems

2 años

Muchas gracias!!

Gustavo Hernan Siciliano

Director de Licenciatura en Sistemas en UNLa | TL & PM en Zerf | Especialista en IoT & Licenciado en Sistemas

2 años

👏 👏 👏 👏 👏 👏

Inicia sesión para ver o añadir un comentario.

Otros usuarios han visto

Ver temas