miércoles, 15 de enero de 2014

Ni tan universal... Lo correcto vs. Lo conveniente

Hoy quiero compartir con ustedes tan solo un párrafo de un libro que he estado leyendo este mes. Como les comenté en ( http://bulda-e-blog.blogspot.com/2014/01/un-libro-al-mes-enero.html ), estoy leyendo "Predicate Calculus and Program Semantics" de Dijkstra y Scholten (1990). El libro es entretenido y bastante ligero (exceptuando el capítulo 5 donde se ponen un poco intensos con la introducción de la cuantificación universal, de la cuál justamente quería hablar).

Dijkstra y Scholten presentan en ese libro una manera inusual de llevar demostraciones lógicas, centrada en la equivalencia en vez de la implicación. Esto acorta considerablemente muchas pruebas y permite exponer propiedades algebráicas que de lo contrario serían difíciles de enunciar. Sin embargo, el costo es convertir la demostración en un cálculo más que en verdadera lógica. La lógica es el estudio de los procesos de razonamiento correctos. ¡Razonamiento humano!. Los razonamientos humanos rara vez se basan en equivalencias y propiedades matemáticas, sino más bien en deducciones realizadas a partir de hechos o suposiciones conocidas.

Desde Aristóteles y sus silogismos, la lógica se ha formalizado de manera que permita deducciones estructuradas y precisas. La lógica simbólica, como la conocemos hoy, de hecho no fue presentada hasta tiempos modernos con Boole y más importantemente con Frege. La lógica que se presenta en el libro parte completamente de lo tradicional y presenta la lógica como una conveniencia, una herramienta y no tanto como objeto de estudio en si. Es otra visión, no necesariamente incorrecta. Eso... hasta que llegas a uno de los últimos párrafos del capítulo 5, el cual les comparto a continuación:

"As the reader will have noticed, we hardly stressed this connection between universal quantification and conjunction. It is not only that we dislike the ominous three dots and that it only works for finite ranges, though -thanks to trading- the range is less a property of the quantified expression and more of a way it has been written down. Our greatest objection is that the analogy sneakily suggests that quantification only provides an (in this case badly needed!) shorthand for 'infinite expressions'. But that metaphor evokes more questions than it answers, and, even worse, questions that we propose to deal with by not raising them, since we don't seem to need the answers. We prefer to view ( x :: f.x) as a very finite expression in the one variable f."


Spock does not approve...

Puse en negrita las partes en donde creo que Dijkstra y Scholten están razonando fuera del recipiente. Después de un capítulo completo introduciendo la cuantificación universal como un ente separado, que casualmente se comporta como la generalización de la conjunción, vienen y sueltan esa bomba. ¿Por qué están restringiendo la potencia de los cuantificadores a rangos finitos? Esa es una restricción realmente grave. Para empezar expresiones como ( n : n > 10 : n > 9), que se leería como "Toda n mayor que 10, es a su vez mayor que 9", estarían ahora mal formadas ya que su rango es infinito. Además, priva al cuantificador de su naturaleza universal y su poder expresivo. Esta suposición, en mi opinión, casi haría completamente inútil a la lógica de predicados (ni hablar si se incluyen lógicas de órdenes superiores).

La justificación evidente y pertinente es que el libro no está dirigido a lógicos, ni matemáticos, sino a computistas. En computación, las estructuras no solo son discretas, sino que son finitas (limitadas por la memoria de la computadora que se use), por lo tanto no hace falta tomar consideraciones hacia el infinito. Es un argumento sólido, pero completamente errado (en mi opinión). No se puede consolidar una teoría únicamente basada en convenciencia. Es como si los diseñadores de lenguajes de programación basaran sus decisiones en que cosas son más fáciles de implementar o no, en vez de las facilidades que se ofrecerían al potencial futuro programador. Siempre se pueden hacer compromisos, pero una restricción tan grave no se justifica. Por ejemplo, muchas de las cosas importantes en computación usan inducción para demostrar ciertas propiedades.

Axioma de Inducción: P.0  ( n : n e N  P.n : P.(n+1))  ( n : n e N : P.n)

Nótese que el predicado P podría estar cuantificado universalmente también, pero no lo puse para no pasar a lógica de segundo orden y sobrecomplicar el punto. Si la cuantificación universal se restringe a expresiones finitas, el mismísimo axioma de inducción estaría mal formado y por ende no podría utilizarse de forma general, jajaja. Debo decir que no me convence en lo absoluto el argumento de ellos, aún con lo útil que ha resultado la lógica que ellos proponen (que casualmente, es la que estudiamos en el curso de Lógica Simbólica en la USB), no deberían estar suponiendo restricciones tan fuertes tan a la ligera. En especial esta frase: "questions that we propose to deal with by not raising them", me parece totalmente fuera de lugar. La manera de resolver problemas no es escondiendo la cabeza e ignorándolos totalmente, creo yo.

Y bueno, esto era lo que quería compartir por ahora. Creo que es el post más gallo y TL;DR en este blog hasta el momento, jajjaa. ¡Gracias por leer (si llegaron hasta acá)! XD Creo que éste es un buen ejemplo de como hasta las personas más brillantes e influyentes, aún pueden caer en la tentación de ponerse un tapaojos temporal, comprarse un periquito mascota y no hacer las cosas de la mejor manera. Creo que es importante poder tener el buen criterio de atrapar estos parches y ser capaces de decidir y razonar si los argumentos presentados son convincentes o no. En este caso creo que no y sé de quienes creen que si es suficiente (y en particular uno de ellos es la persona más brillante que conozco), pero para mi no lo es, jeje. Espero no espantarlos demasiado de esta locura bulda.e.bienística y hasta una próxima entrada. Bytes! :D

No hay comentarios:

Publicar un comentario