Categories
General

Logica Formal de 1r Orden

La Logica Formal de Primer Orden, la mas usada universalmente en la actualidad, nos permita demostrar formalmente la veracidad o falsedad de los razonamientos deductivos que se nos presenten. Segun sean estos, elegiremos uno de sus lenguajes formales u otro: si unicamente trabajamos con hechos y posibles conexiones entre ellos, entonces es propio usar la Logica Proposicional; pero si los sujetos, y las posibles propiedades o relaciones que les afectan, cobran importancia en el razonamiento, el nivel de abstraccion de la Logica de Predicados es el correcto.

En el lenguaje proposicional, podemos diferenciar un alfabeto formado por variables proposicionales (que designan sentencias declarativas, susceptible a ser verdaderas o falsas), conexiones logicas (que unen proposiciones, atomicas o moleculares, para formar siempre moleculares mas complejas) y simbolos auxiliares (parentesis, corchetes… que aportan claridad al lenguaje). Para que estos elementos estan bien construidos y jerarquizados (formen una fbf) deben respetar una gramatica. Esta se expresa segun 8 reglas que se resumen en: si A y B son fbf, entonces, ¬A, A∧B, A∨B, A→B y A↔B tambien lo son; la jerarquia de conectivas es: [¬]>[^,v]>[→,↔], y la fbf se define por la conectivas de mayor jerarquía.

El lenguaje de predicados atiende, ademas de a los hechos y a sus conexiones, a los sujetos, sus prpiedades, relaciones y cuantificaciones. En este caso, el alfabeto lo forman las variables, que designan un objeto ideterminado y se representan normalmente por x, y, z o w, las constantes, que se refieren a objetos concretos e invariables, se escriben cono a, b, o c normalmente; las funciones hacen referencia tambien a un objeto, a un individuo, pero en este caso expresan una propiedad de este, como por ejemplo padre(alvaro) se refiere al padre de alvaro, bernardo, pero tambien se puede utilizar esa misma funcion para definir a otros padres; pueden sustituirse po constantes. Los predicados, en cambio, expresan tambien propiedades o relaciones, pero ya no simbolizan a un individuo. Esas relaciones o propiedades pueden ser verdaderas o falsas, por ejemplo: Pa(bernardo, alvaro), este predicado es verdadero, por ejemplo.

Cualquier variable, constante o funcion es tambien un termino, y un predicado es una formula, bien atomica, bien molecular (siguiendo los mismos criterios ya que en el leng. proposicional). Ademas, se utilizan cuantificadores como el universal, ∀, para afirmar que todos los elementos de algun conjunto cumplen la propiedad o la relacion en cuestion, o el existencial, ∃, que indica que uno o mas elementos la cumplen. Suplementariamente, en el lenguaje de predicados tambien se utilizan todos los simbolos del lenguaje proposicional (variables, conexiones y parentesis). La gramatica a seguir para formar las fbf predicativas es similar a la proposicional, añadiendo: si F es una fbf: ∀xi F[x1, x2, …, xn]; ∃xi F[x1, x2, …, xn] tambien lo son. Finalmente, cabe concretar el termino “dominio”: conjunto no vacio de individuos distinguibles entre si acerca de los cuales seestablecen las propiedades o relaciones, por ejemplo: Dominio ≡ D ; D={2, 4, 8, 10} ; ∀x Par(x) este predicado correcto, pero si el dominio fuera D’={1, 2, 4, 3, 5, 6} seria falso.

Categories
General

Primera Clase de Prácticas

En la primera clase práctica, después de exponer el plan de estudios que se desglosa en la entrada anterior, el profesor Carlos ha empezado a mostrarnos el programa con el que trabajaremos los ejercicios de Lógica, el “Prolog”. Simplemente hemos aprendido a descargar e instalar el programa desde el link de descarga, y hemos observado su funcionamiento con unos cuantos ejemplos ya editados previamente, y cargados en el CV.

Hemos trabajado con dos de ellos en clase y otros dos quedaban pendientes para casa. El primero simulaba un juego de preguntas y respuestas en el que al introducir el comando “preguntar.” aparecían un enunciado y cuatro posibles respuestas en la ventana del SWI-Prolog. A continuación, al introducir el número de la respuesta que consideras correcta, el programa te contesta felicitándote por acertar o consolándote por el error y corrigiéndote.

En cuanto a la estructura interna del programa, visible mediante el editor Emacs (accesible mediante el comando “emacs.”), aunque semántica y sintácticamente un poco compleja y meticulosa, aparecía ordenada de forma lógica y entendible: primero, el apartado de hechos, y a continuación el de reglas, cada uno con códigos y referencias especificas que estudiaremos más adelante. Otro factor que favorecía al manejo del programa es la presentación en colores, siendo verdes los comentarios y negros, azules o rojos los códigos.

El siguiente ejemplo era similar, pero esta vez el juego figuraba el clásico piedra-papel-tijera. El comando a introducir (o código independiente) esta vez era “jugada(X)” siendo X una de las tres opciones a elegir: piedra, papel o tijera. También analizamos este programa con el Emacs y forzamos algunos errores en la sintaxis para comprobar los resultados. Los dos ejemplos restantes que había que mirar en casa servían para, de algún modo, dibujar, o una tarta con tantas velas como introduzcas en la consola, o un árbol con tantos pisos como insertes en el comando correspondiente también.

De ahora en adelante deberemos aprender a usar y relacionar los comandos, y dominar la sintaxis, para, finalmente programar un “videojuego” del tipo Aventura Conversacional. Será íntegramente textual (sin gráficos) pero con posibilidades de movimiento a lo largo de un mapa y de interactuación con objetos que se encuentran por él, para conseguir un objetivo; en este caso sera encontrar la salida del edificio donde te encuentras. El videojuego se llama, paródicamente, “Aqui no hay quien Estudie… Mates 1”.