Evaluación automatica de fórmulas del sistema K1

AutoreDora Sánchez García
Pagine327-341

    El programa que presentamos aquí constituye una version simplificada de un programa más amplio que incluye además de las rutinas que componen el que aquí exponemos, una rutina para lñ comprobación de sí la fórmula que se pretende probar está bien formada o no (en esta versión más simple sólo se pueden introducir como datos fórmulas bien formadas), y otra rutina para la eliminación de negadores múltiplo en caso de que los hubiera. Asimismo las subratinas de fautores deóntícos y de juntores diádicos están elaboradas en esta versión de forma a que estén lo más próximas posible a la intuición. Nos han parecido oportunas todas estas simplificaciones dado el carácter introductorio de las jornadas.


Page 327

La posibilidad de computar ciertos aspectos de la lógica tiene ya una larga historia cuyo comienzo puede situarse en los trabajos de Newell-Shtw-Si-mon (1957), y de Hao Wang (1960). Nos gustaría subrayar la importancia de este tipo de trabajos con unas palabras del profesor Quine que nos parecen sumamente significativas: «(...) la programación llega a ser la prueba del formalismo. Estar totalmente formalizado es estar programado, (...) Un programa tiene que ser el análisis ultimo de un formalismo, debido a la falta de intuición por parte de la máquina»1.

Por supuesto que el programa que presentamos no constituye el análisis ultimo del sistema K1, pero esperamos que pueda constituir una aportación por modesta que sea, en este sentido.

Como' es'sabido, el sistema K1 del profesor Kalinowski se sirte del método de las tablas de verdad como procedimiento algorítmico para determinar sí una expresión bien formada cualquiera es o no deducíble. Este método es obviamente computable y vamos a presentar en programa en lenguaje BASIC que lo computa.

Antes de pasar a la exposición del programa conviene que hagamos algunas observaciones.

Salvo la traducción de los distintos símbolos que componen una fórmula a números, que es obv¡amente necesaria no hemos necesitado introducir ninguna modificación en la estructura de las fórmulas para su tratamiento automático.

Page 328

El hecho de que el sistema' K1 utilice la notación polaca favorece el que se pueda tratar una fórmula como una lista ordenada de números, ya que no tenemos ningún signo de puntuación que ayude a determinar el alcance de las constantes lógicas.

El vocabulario que utilizamos es el del sistema K1, con la salvedad de que se sustituye «a» por «d» impuesta naturalmente por los recursos de impresión del ordenador.

La traducción numérica de los jentores'diádícos es la siguiente:

C («implicación») = 4

A («disyunción inclusiva») = 5

K («conjunción») = 6

D («disyunción exclusiva») = 7

E («coimplicación») = 8

El negador, tanto nominal como preposicional, se traduce por un 3. La traducción de «a» es 2.

Los funtores deóeticos se traducen como sigue;

L («deber no hacer») = 11

S («deber hacer») = 14

P («tener el derecho de hacer») = 13

W («tener el derecho de no hacer») = 15

M («poder hacer y no hacer») = 12

V («no tener el derecho de no hacer o no tener el derecho de hacer») = 16

Tomemos como ejemplo la fórmula consistente en la complicación de T.48 y T.55,

E E Mxa K NLxa NSxa EMxa K Pxa PxNa

en el programta esta fórmula es tratada como el vector numérico:

8, 8, 12, 2, 6, 3, 11, 2, 3, 14, 25 8, 12, 2, 6, 13, 2, 13, 3, 2,

La variable nominal individual «x» se ignora durante el proceso, ya que se trata de la varítble que simboliza a un sujeto concreto de acción y no se le asignan valores. No obstante en la impresión de resultados sí que aparece esta variable.

a

simboliza el nombre de la acción y toma los valores 1*, 1/2* y 0* (bondad, indiferencia y maldad, respectivamente). Sí se antepone a «a» elPage 329 negador «N» se crea el nombre de la acción opuesta. La matriz sería la. siguiente:

a Na
1* 0*
1/2* 1/2*
0* 1*

Con el fin de conciliar la trivalencia de la acción con la bivalencia de las normas que no son más que verdaderas o falsas, se construyen las siguientes matrices:

a Sxa Lxa Pxa Wxa Mxa Vxa
1* 1 0 1 0 0 1
1/2* 0 0 1 1 1 0
0* 0 1 0 1 0 1

Cualquier expresión bien formada en el sistema K1 puede probarse medíante un método cero-uno. Para el único axioma de K1 la prueba sería:

A1 CNPxNcx Pxcx

CNPxNa Pxcx = CNPxN1*Px1* = CNPxO* Px1*

= CN01 = C11 = 1. CNPxNa Pxa = CNPxN1/2* Px1/2* = CNPx1/2* Pxl/2*

= CN11 = C01 = 1. CNPxNa Pxa = CNPxNO* PxO* = CNPx1* PxO*

= CN10 = C00 = 1.

De esta forma la prueba de una expresión está formada por distintos vectores en los que van desapareciendo los distintos elementos que componen las subfórmulas y son sustituidos por el resultado de su evaluación. Esta es la idea que subyace a nuestro programa.

  1. Proceso de computación

La lista ordenada de números que traduce la fórmula que queremos probar es introducida en un vector (B) mediante un enunciado INPUT. Antes de pasar a la asignación de valores y a la determinación del valor de verdad de las subfórmulas, reproducimos en otro vector (A) la fórmula t probar. Todas las operaciones se llevan a cabo en el vector A que vamos destruyendo conforme vamos calculando el valor de verdad de las sobféfnielas; de forma que al final tenemos en la primera posición el valor de verdad de la fórmula para ue determinado valor de ex. Como tenemos la fórmula íntegra en elPage 330 vector B, volvemos a reproducirla en el vector A y proseguimos el análisis con el siguiente valor de a.

Siguiendo con el ejemplo anterior, el vector A quedaría de la siguiente forma antes de la asignación de valores:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 17 18 19 20 21 22

8 8 12 2 6 3 11 2 3 14 2 8 12 2 6 13 2 1 3 3 2 0 0

Los vectores están dimensionados de forma que el número de posiciones es superior al numero de elementos que componen la fórmula esto posibilita el que podamos utilizar el siguiente recurso para contarlos:

[ NON INCLUDE GRAFICI ]

Establecemos.un bucle que recorre el vector de izquierda a derecha, cuando encontramos un 0 esto nos índica que nos encontramos en la primera posición vacía del vector (en nuestro ejemplo la casilla 21) y que por tanto en la posición anterior se encuentra el último elemento de la fórmula, nos salmos del bucle y hacemos la variable E igual al valor de I menos 1.

Antes de pasar a la asignación de valores se establece el valor de a mediante una variable («Z») que toma inídaimente el valor 0. Posteriormente veremos cómo cambiamos este valor. (Es importante hacer notar que durante el proceso iremos «borrando» aquellas casillas que no vamos a seguir necesitando, para ello les asignamos «K1». Hemos elegido este valor porque no tenemos ningún otro valor negativo en el vector y esto nos facilita su manejo).

1.1...

Per continuare a leggere

RICHIEDI UNA PROVA

VLEX uses login cookies to provide you with a better browsing experience. If you click on 'Accept' or continue browsing this site we consider that you accept our cookie policy. ACCEPT