Autor Tema: Comentarios a Lógica de primer orden

0 Usuarios y 1 Visitante están viendo este tema.

04 Marzo, 2013, 03:23 pm
Leído 32116 veces

Carlos Ivorra

  • Administrador
  • Mensajes: 11,114
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
    • Página web personal
Este hilo está destinado a plantear y discutir los comentarios que puedan surgir sobre el artículo Lógica de primer orden, de la revista del foro.

04 Marzo, 2013, 07:07 pm
Respuesta #1

pierrot

  • pabloN
  • Moderador Global
  • Mensajes: 3,447
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
¡Qué bueno que haya un hilo de referencia sobre lógica de primer orden!
$_="loe  hnachaPkr erttes,urJ";$j=0;for($i=0;s/(.)(.{$j})$//;$i++){$_=$2.$_,$j+=1-$i%2,print$1}print

16 Marzo, 2013, 07:24 pm
Respuesta #2

Lycan

  • $$\Large \color{#5372a0}\pi\,\pi$$
  • Mensajes: 73
  • Karma: +0/-0
  • Sexo: Masculino

16 Marzo, 2013, 07:39 pm
Respuesta #3

Carlos Ivorra

  • Administrador
  • Mensajes: 11,114
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
    • Página web personal
¡Qué bueno que haya un hilo de referencia sobre lógica de primer orden!

Muy interesante el hilo.

Me alegro que os interese. Si cualquiera ve algo que no está suficientemente claro, o tiene cualquier clase de duda conceptual que considera se podría tratar en el hilo, sólo tiene que plantearla aquí.

17 Marzo, 2013, 02:06 am
Respuesta #4

gdl

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 13
  • Karma: +0/-0
Muy buenas, Carlos. He leído el artículo rápidamente y, seguramente será por mi formación en informática, lo encuentro algo distinto a lo que esperaría de la lógica de primer orden. Estoy seguro que hablamos de lo mismo, pero desde distintas perspectivas. Voy a intentar explicar mi punto de vista porque quizás te sea de utilidad y ambos podamos aprender.

Cuando hable de "nosotros" me refiero a cómo lo veíamos en nuestras clases de informática. Yo, la verdad, no soy nadie especialmente dedicado a la lógica.

Para empezar, nosotros hacíamos una gran distinción entre sintaxis y semántica. Más que nada porque luego teníamos distintas semánticas. En tu artículo lo veo todo muy mezclado (defines modelo antes de fórmula) y creo que quedaría mejor si dedicases o bien otro artículo o bien una sección inicial a la sintaxis. Luego, completamente separada, la semántica.

También veo que hablas de lenguaje formal cuando te refieres específicamente al lenguaje formal de la lógica de primer orden. Frases como "pero exigiremos que todo lenguaje formal tenga al menos un relator diádico que representaremos por \( = \)" creo que estarían mejor redactadas como "pero exigiremos que el lenguaje formal de la lógica de primer orden tenga al menos un relator diádico que representaremos por \( = \)". Mucho mejor aún si le dieras un nombre a tu lenguaje como \( L_1 \).

Además, veo que repites la idea de "un término es si hay una secuencia de cadenas..." y "una fórmula es si hay una secuencia de cadenas..." Los matemáticos buscáis la abstracción. Algo general que sirva para múltiples casos. ¿Por qué no lo has hecho aquí? Bueno. Voy a dar mi opinión y luego ya me criticas.

Por cierto, como nota al margen, nosotros separábamos la lógica de primer orden de la lógica de primer orden con igualdad. Esta última introducía ciertas complicaciones y se necesitaban otras técnicas de resolución (ver por ejemplo la regla de paramodulación).

A lo que voy. Estoy recordando sin consultar apuntes o libros algo puede "bailar" pero los conceptos son muy simiples. Como yo lo haría (como a mí me enseñaron) es algo tal que así.





Lenguajes formales.

Lo primero que hacíamos es definir un lenguaje formal y no específicamente el lenguaje formal de la lógica de primer orden. Esto lo hacíamos de la siguiente manera.

Tomábamos un conjunto \( \Sigma \) que llamábamos alfabeto. El alfabeto se compone de símbolos. Por ejemplo: \( \Sigma=\left\{a,b,c\right\} \). No trataremos ni con los alfabetos ni con los símbolos directamente. El alfabeto debe ser finito (aunque en algunos sitios recuerdo haber visto que puede ser numerable).

Del alfabeto se obtenía el conjunto de sus secuencias \( \Sigma^* \). Este operador es la estrella de Kleene (creo que en matemáticas es el monoide libremente generado). El elemento neutro (la secuencia vacía) la notábamos con \( \epsilon \). A las secuencias también las llamábamos cadenas o palabras.

Definimos un lenguaje como un subconjunto de este conjunto de secuencias \( L\subseteq\Sigma^* \).

Introducíamos los conjuntos unitarios y los notamos con el símbolo correspondiente. Es decir \( a \) es realmente el conjunto \( \left\{a\right\}\subseteq\Sigma^* \).

Introducimos operaciones sobre los lenguajes. En concreto:
- la concatenación (usando la operación del monoide) \( L_1L_2=\left\{w_1w_2\mid w_1 \in L_1, w_2\in L_2\right\} \). También usamos \( \epsilon \) para el conjunto \( \left\{\epsilon\right\} \).
- la unión (simple unión de conjuntos pero representada ahora por el símbolo \( \mid \) de forma que \( L_1\mid L_2=L_1\cup L_2 \))
- la potenciación basada en la concatenación \( L^0=\left\{\epsilon\right\} \) y \( L^{n+1}=L^nL \)
- la clausura de Kleene. No es más que la unión (notada como suma) de todas las potencias \( L^*=\sum_{n=0}^\infty{L^n} \)

Un lenguaje inductivamente generado por una ecuación basada en las anteriores operaciones es el menor lenguaje que cumple tal ecuación. Por ejemplo, \( t = a \mid tt  \) significa que el lenguaje \( t \) cumple que es el lenguaje \( a \) unión la concatenación de dos de sus elementos. Inductivamente aquí entraría \( aa \), \( aaa \) y así. Es importante aquí, aunque no recuerde el detalle de todo esto, que el lenguaje inductivamente generado tiene estructura en el sentido de que podemos realizar demostraciones por inducción sobre él.

Hasta aquí lenguajes formales (bastante restringidos ya que son de cierto tipo muy concreto, pero habría que definir gramáticas para poderlos caracterizar totalmente).

Sólo con esto hay una gran cantidad de teoría que se puede desarrollar. Que me venga a la mente: álgebra de términos, relaciones de subsunción o sistemas de reescritura. Seguro que más.




Sintaxis de la lógica de primer orden.

Ahora voy a la sintaxis del lenguaje que vamos a usar. La sintaxis de la lógica de primer orden (sin igualdad explícita) se definiría como:

Alfabeto: \( \Sigma=K \cup V \cup C \cup F \cup P \)
Con \( K \) símbolos de puntuación y conectivas \( ¬ \rightarrow \vee \wedge \leftrightarrow \top \bot \forall \exists ( ) , \)
Con \( V \) símbolos de variable (infinito numerable).
Con \( C \) símbolos de constante (numerable, posiblemente vacío).
Con \( F=F_1 \cup F_2 \cup \cdots \) símbolos de función (numerable, posiblemente vacío). (Tú los llamas functores)
Con \( P=P_1 \cup P_2 \cup \cdots \) símbolos de predicado (numerable, no vacío).  (Tú los llamas relatores e introduces en \( P_2 \) el igual)
Todos estos conjuntos de símbolos disjuntos entre sí.

Nota: en algunos textos he visto todas los símbolos de función (funtores) mezclados y luego una aplicación de aridad le da a cada uno de ellos un natural que es el número de argumentos que debe tomar. Idem para los símbolos de predicado (relatores).

El conjunto de términos \( T \) es el lenguaje inductivamente generado por la ecuación  \(  T = V \mid C \mid F_1(T) \mid F_2(T,T) \mid \cdots  \)
El conjunto de átomos \( A \) se define como \(  A = P_1(T) \mid P_2(T,T) \mid P_3(T,T,T) \mid \cdots  \).
El lenguaje de la lógica de primer orden es el lenguaje inductivamente generado por la ecuación \( L= \bot \mid \top \mid A \mid ¬L \mid (L\vee L) \mid (L\wedge L) \mid (L\rightarrow L) \mid (L\leftrightarrow L) \mid \forall V L \mid \exists V L \)







Y si no me he equivocado, esto basta.

Hasta aquí nada de semántica. Todo son símbolos puestos ordenadamente, pero sin significado. Ahora, según la semántica que queramos dotarle a la lógica, podremos introducir una función de interpretación (semántica denotacional), unas reglas de inferencia (semántica operacional) o introducir un isomorfismo con alguna otra estructura matemática (esta es la que más me gusta, espero que podamos hablar de ella más adelante).

Otra cosa: perdóname mi "ligereza" a la hora de introducir los conceptos. Comprendo que a un matemático le chirríe mucho mi falta de detalle y la completa ausencia de demostraciones en mis afirmaciones. Por ejemplo, mi lenguaje inductivamente generado seguramente que se corresponda al mecanismo de una sucesión de cadenas de signos que mencionas en tu definición de fórmula.

Sólo espero haber dejado claro mi punto de vista de separar la sintaxis de la semántica por un lado y de introducir unas herramientas para definir los lenguajes formales (independientemente de si vamos a usarlos para la lógica de primer orden o para otra cosa). Y que esa separación no es puntual en cada definición, sino estructural en el desarrollo del texto: primero lenguajes formales en general, luego sintaxis del lenguaje de la lógica de primer orden y finalmente las semánticas.

También me ha parecido que introduces una complejidad innecesaria al definir las conectivas formalmente en forma prefija \( \rightarrow \beta \gamma \) pero luego muestras en forma infija \( \beta \rightarrow \gamma \). ¿No crees que es mejor introducirlas de forma infija dejando los paréntesis? En todo caso decir la prioridad que tienen y omitir los paréntesis superfluos. En cualquier caso, esto es un detalle menor.

Bueno. Me voy a la cama que es tarde. Espero no haber dicho muchas tonterías.

17 Marzo, 2013, 03:52 am
Respuesta #5

Carlos Ivorra

  • Administrador
  • Mensajes: 11,114
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
    • Página web personal
Muy buenas, Carlos.

Hola, gdl. Bienvenido al foro en general y a este hilo en particular.

He leído el artículo rápidamente y, seguramente será por mi formación en informática, lo encuentro algo distinto a lo que esperaría de la lógica de primer orden.

Ésa era justamente mi intención, escribir algo distinto, porque para escribir lo mismo que ya está escrito en los libros, para eso ya están los libros. Naturalmente, hacer algo distinto sólo por no hacer lo mismo sería una frivolidad por mi parte. Mi intención de hacer algo distinto está motivada a su vez porque tengo la sensación (generada en gran parte por consultas sobre lógica que he visto hacer en este foro) que quienes estudian lógica siguiendo los estándares que se ven en los libros acaban con una concepción de la lógica que, a mi juicio (siempre discutible) está bastante deformada, y mi intención era enfatizar los aspectos que los libros no enfatizan por su forma de exposición.

Estoy seguro que hablamos de lo mismo, pero desde distintas perspectivas. Voy a intentar explicar mi punto de vista porque quizás te sea de utilidad y ambos podamos aprender.

Te aclaro yo también la perspectiva desde la que estoy diseñando el hilo: mi intención es explicar la lógica como formalización del razonamiento matemático y exclusivamente con la finalidad de servir de fundamento a la matemática formal. Evidentemente, con la lógica se pueden hacer muchas más cosas que fundamentar las matemáticas, pero mi interés es exclusivamente explicar qué es y por qué es como es la lógica que sirve de fundamento a la matemática formal.

Cuando hable de "nosotros" me refiero a cómo lo veíamos en nuestras clases de informática. Yo, la verdad, no soy nadie especialmente dedicado a la lógica.

Yo tampoco. Como digo, la lógica "en sí misma" tampoco me ha interesado nunca. Me interesa como fundamento de la matemática y como herramienta auxiliar en el estudio de la teoría de conjuntos. La lógica "en sí misma" o "en abstracto", siempre me ha parecido bastante insulsa, pero eso es, por supuesto, un juicio personal y subjetivo que sólo pretende explicar que, de hecho, nunca he visto nada interesante en ella.

Para empezar, nosotros hacíamos una gran distinción entre sintaxis y semántica.

Sí, la razón por la que la lógica matemática sirve para algo es precisamente porque permite prescindir completamente de la semántica, y la forma más clara de ponerlo de manifiesto es describir la sintaxis sin mencionar para nada la semántica. Así lo hago en mi libro de lógica, pero precisamente en este hilo quería enfatizar lo que se pierde de vista al proceder de ese modo: aunque la sintaxis sea al final independiente de la semántica, es fundamental comprender que está completamente motivada por la semántica. Una de las "deformaciones" a las que, siempre a mi juicio, induce la presentación usual de la lógica (primero sintaxis sin referencia alguna a la semántica y luego semántica) es que uno se queda con la sensación de que todas las definiciones sintácticas son arbitrarias, que uno define el modus ponens como lo define, pero que nada hubiera impedido definirlo como que de \( \alpha\rightarrow \beta \) y \( \beta \) se deduce \( \alpha \), por ejemplo.

Lo que pretendo mostrar en el hilo que estoy escribiendo es que todas las definiciones sintácticas están motivadas por el significado pretendido de los lenguajes formales, que aunque podamos definir un relator como un signo que simplemente tiene la etiqueta de relator, lo cierto es que un relator es un signo que pretende ser interpretado como una relación y que no es necesario ocultar o posponer eso para dejar claro que no es necesario hablar de relaciones para definir los lenguajes formales.

Más que nada porque luego teníamos distintas semánticas.

No sé muy bien a qué te refieres con esto. ¿Te refieres a que un mismo lenguaje formal admite distintos modelos o es algo más?

En tu artículo lo veo todo muy mezclado (defines modelo antes de fórmula) y creo que quedaría mejor si dedicases o bien otro artículo o bien una sección inicial a la sintaxis. Luego, completamente separada, la semántica.

Si quieres eso, sólo tienes que leer mi libro de lógica, pero no era mi intención copiar o resumir mi libro de lógica, lo que planteas era justo lo contrario de lo que quería hacer. En realidad no era mi intención exactamente "mezclar" la sintaxis con la semántica, sino presentarlas paralelamente, o más precisamente, con la semántica siempre un paso por delante de la sintaxis, cuidando de dejar claro que al final la sintaxis no se apoya en la semántica, pero incidiendo sobre todo en que toda definición sintáctica está motivada por un concepto semántico. Defino modelo antes que fórmula porque para entender qué es realmente una fórmula no basta asumir que es una cadena de signos que satisface ciertos principios sintácticos de construcción, sino que la idea de fondo es que una fórmula es una cadena de signos susceptible de tener un significado en un modelo. Las ideas de ese tipo son las que se difuminan con la exposición estándar que propones y son las que yo pretendo enfatizar.

Al no hacerlo así se hace de forma subconsciente e incontrolada lo que es mejor, siempre a mi juicio, hacer de forma consciente y controlada: aunque no se hable para nada de semántica al exponer la sintaxis, lo cierto es que todo aquel que ve una fórmula de acuerdo con la definición sintáctica correspondiente, se da cuenta de que puede "leerla" como una afirmación, aunque oficialmente se le asegura que no es más que una cadena de signos, pero cualquier reflexión sobre esto queda prohibida por la prohibición de mencionar la semántica. En las cuestiones que han aparecido hasta ahora esto no es especialmente grave, pero creo que en cuanto se entra en el concepto de deducción, el obstinarse en no motivarlo semánticamente introduce muchos malentendidos.

También veo que hablas de lenguaje formal cuando te refieres específicamente al lenguaje formal de la lógica de primer orden.

Cierto, pero eso es como cuando uno dice "número" refiriéndose a "número real" porque no va a tratar con números complejos. El hilo se titula Lógica de primer orden, y hay que entender que cuando digo "lenguaje formal", quiero decir "lenguaje de primer orden" y, más concretamente, un lenguaje formal del tipo que he definido, sin más pretensiones de generalidad.

Frases como "pero exigiremos que todo lenguaje formal tenga al menos un relator diádico que representaremos por \( = \)" creo que estarían mejor redactadas como "pero exigiremos que el lenguaje formal de la lógica de primer orden tenga al menos un relator diádico que representaremos por \( = \)". Mucho mejor aún si le dieras un nombre a tu lenguaje como \( L_1 \).

No. Todo lo que has dicho hasta aquí es totalmente coherente y simplemente responde a un punto de vista distinto del que yo quiero seguir, pero en esto último hay un pequeño error conceptual. No puede hablar de "el lenguaje formal de la lógica de primer orden" ni mucho menos darle un nombre, porque no es un único lenguaje formal, sino que estoy tratando con infinitos lenguajes posibles, según las constantes, relatores o funtores que posean. No es uno solo.

Además, veo que repites la idea de "un término es si hay una secuencia de cadenas..." y "una fórmula es si hay una secuencia de cadenas..." Los matemáticos buscáis la abstracción. Algo general que sirva para múltiples casos. ¿Por qué no lo has hecho aquí?

Aquí no sé muy bien a qué te refieres. ¿Estás objetando que la definición que doy de término o fórmula no es suficientemente general o suficientemente rigurosa? Pregunto simplemente porque no sé lo que quieres decir.

Bueno. Voy a dar mi opinión y luego ya me criticas.

Por cierto, como nota al margen, nosotros separábamos la lógica de primer orden de la lógica de primer orden con igualdad. Esta última introducía ciertas complicaciones y se necesitaban otras técnicas de resolución (ver por ejemplo la regla de paramodulación).

Sí, distinguir entre lógica con o sin igualdad es totalmente estándar, pero yo pregunto ¿para qué sirve la lógica de primer orden sin igualdad? Podrás decirme que la distinción sirve para ver cuáles son los requisitos lógicos específicos para tratar con la igualdad, pero no estoy interesado en diseccionar la lógica de ese modo. Si los únicos lenguajes formales que voy a usar tienen igualdad, no veo el interés de estudiar primero lenguajes sin igualdad. Es como si antes de estudiar grupos se considerara conveniente estudiar semigrupos a pesar de que nunca vas a trabajar con un semigrupo que no sea un grupo. En ese contexto, yo trabajaría directamente con grupos, y no me importaría si algunas de las cosas que digo valieran también para semigrupos que no fueran grupos.

A lo que voy. Estoy recordando sin consultar apuntes o libros algo puede "bailar" pero los conceptos son muy simiples. Como yo lo haría (como a mí me enseñaron) es algo tal que así.

Lenguajes formales.

Lo primero que hacíamos es definir un lenguaje formal y no específicamente el lenguaje formal de la lógica de primer orden. Esto lo hacíamos de la siguiente manera.

Tomábamos un conjunto \( \Sigma \) que llamábamos alfabeto. El alfabeto se compone de símbolos. Por ejemplo: \( \Sigma=\left\{a,b,c\right\} \). No trataremos ni con los alfabetos ni con los símbolos directamente. El alfabeto debe ser finito (aunque en algunos sitios recuerdo haber visto que puede ser numerable).

Del alfabeto se obtenía el conjunto de sus secuencias \( \Sigma^* \). Este operador es la estrella de Kleene (creo que en matemáticas es el monoide libremente generado). El elemento neutro (la secuencia vacía) la notábamos con \( \epsilon \). A las secuencias también las llamábamos cadenas o palabras.

Definimos un lenguaje como un subconjunto de este conjunto de secuencias \( L\subseteq\Sigma^* \).

Introducíamos los conjuntos unitarios y los notamos con el símbolo correspondiente. Es decir \( a \) es realmente el conjunto \( \left\{a\right\}\subseteq\Sigma^* \).

Introducimos operaciones sobre los lenguajes. En concreto:
- la concatenación (usando la operación del monoide) \( L_1L_2=\left\{w_1w_2\mid w_1 \in L_1, w_2\in L_2\right\} \). También usamos \( \epsilon \) para el conjunto \( \left\{\epsilon\right\} \).
- la unión (simple unión de conjuntos pero representada ahora por el símbolo \( \mid \) de forma que \( L_1\mid L_2=L_1\cup L_2 \))
- la potenciación basada en la concatenación \( L^0=\left\{\epsilon\right\} \) y \( L^{n+1}=L^nL \)
- la clausura de Kleene. No es más que la unión (notada como suma) de todas las potencias \( L^*=\sum_{n=0}^\infty{L^n} \)

Un lenguaje inductivamente generado por una ecuación basada en las anteriores operaciones es el menor lenguaje que cumple tal ecuación. Por ejemplo, \( t = a \mid tt  \) significa que el lenguaje \( t \) cumple que es el lenguaje \( a \) unión la concatenación de dos de sus elementos. Inductivamente aquí entraría \( aa \), \( aaa \) y así. Es importante aquí, aunque no recuerde el detalle de todo esto, que el lenguaje inductivamente generado tiene estructura en el sentido de que podemos realizar demostraciones por inducción sobre él.

Hasta aquí lenguajes formales (bastante restringidos ya que son de cierto tipo muy concreto, pero habría que definir gramáticas para poderlos caracterizar totalmente).

Sólo con esto hay una gran cantidad de teoría que se puede desarrollar. Que me venga a la mente: álgebra de términos, relaciones de subsunción o sistemas de reescritura. Seguro que más.

Sí, esto que planteas es bastante estándar y propio de los libros de lógica, y aquí entramos en una mera cuestión de "gustos", y es que debo decirte que eso me parece "horripilante" (y no es una crítica hacia ti, naturalmente, que estás defendiendo la ortodoxia). ¿Realmente aporta a algo a alguien ese planteamiento abstracto que propones? Yo he visto a gente en este foro pregunta dudas sobre ejercicios en ese contexto, y he procurado resolverlas, pero en el fondo pienso ¿y a qué clase de profesores se les ocurrirá hacer perder el tiempo a esta gente con problemas tan tontos en lugar de ir directamente a lo que interesa, a lo que aporta algo? Insisto en que son apreciaciones subjetivas, pero mi impresión es que estar dándole vueltas a lenguajes formados por as bes y ces, es una pérdida de tiempo, cuando puedes ir directamente a los lenguajes formales que interesan. En todo caso sería al revés: sólo cuando alguien ha asimilado las ideas importantes sobre lenguajes formales "de verdad", de los que pueden usarse para formalizar razonamientos, uno puede interesarse en versiones abstractas de esos lenguajes. Es como si a alguien que no sabe nada de grupos, anillos y espacios vectoriales empiezas a hablarle de categorías. Es más sensato demostrarle a uno el teorema de isomorfía de grupos, y el de anillos, y el de espacios vectoriales y, a lo sumo, en un futuro, hacerle ver que todos son casos particulares de un teorema sobre categorías abelianas, si es que uno llega a estudiar algo en el que el punto de vista de las categorías abelianas le aporta realmente algo.

De hecho, si algo me deja insatisfecho de la forma en que presento la lógica es el no poder ser un poco menos abstracto de lo que estoy siendo. Me gustaría poder (o saber) presentar las cosas de una forma mucho más elemental, que no requiriera abstracciones innecesarias, pues lo que pretendo es explicar algo muy concreto y muy intuitivo, algo que no requiere tratar con lenguajes sin significado, y aun así cualquier intento de precisar lo que es una fórmula o un modelo puede "echar para atrás" a más de uno, a pesar de que la idea de fondo la tiene que entender todo el mundo.

Sintaxis de la lógica de primer orden.

Ahora voy a la sintaxis del lenguaje que vamos a usar. La sintaxis de la lógica de primer orden (sin igualdad explícita) se definiría como:

Alfabeto: \( \Sigma=K \cup V \cup C \cup F \cup P \)
Con \( K \) símbolos de puntuación y conectivas \( ¬ \rightarrow \vee \wedge \leftrightarrow \top \bot \forall \exists ( ) , \)
Con \( V \) símbolos de variable (infinito numerable).
Con \( C \) símbolos de constante (numerable, posiblemente vacío).
Con \( F=F_1 \cup F_2 \cup \cdots \) símbolos de función (numerable, posiblemente vacío). (Tú los llamas functores)
Con \( P=P_1 \cup P_2 \cup \cdots \) símbolos de predicado (numerable, no vacío).  (Tú los llamas relatores e introduces en \( P_2 \) el igual)
Todos estos conjuntos de símbolos disjuntos entre sí.

Nota: en algunos textos he visto todas los símbolos de función (funtores) mezclados y luego una aplicación de aridad le da a cada uno de ellos un natural que es el número de argumentos que debe tomar. Idem para los símbolos de predicado (relatores).

El conjunto de términos \( T \) es el lenguaje inductivamente generado por la ecuación  \(  T = V \mid C \mid F_1(T) \mid F_2(T,T) \mid \cdots  \)
El conjunto de átomos \( A \) se define como \(  A = P_1(T) \mid P_2(T,T) \mid P_3(T,T,T) \mid \cdots  \).
El lenguaje de la lógica de primer orden es el lenguaje inductivamente generado por la ecuación \( L= \bot \mid \top \mid A \mid ¬L \mid (L\vee L) \mid (L\wedge L) \mid (L\rightarrow L) \mid (L\leftrightarrow L) \mid \forall V L \mid \exists V L \)

Y si no me he equivocado, esto basta.

Sí, conozco esta forma de hacer las cosas, y siempre he tratado de evitarla a toda costa. Hay un aspecto en todo esto del que no sé si eres consciente. No sé si cuando escribes todo lo que escribes estás pensando en ello como afirmaciones formales en una teoría de conjuntos que te permite hablar de uniones, intersecciones, conjuntos numerables, definiciones inductivas, etc. Si es así, tenemos un problema serio, porque una de las utilidades de la lógica de primer orden es construir la teoría de conjuntos que (tal vez, si acierto al interpretar cómo concibes lo que dices) es necesaria para que puedas desarrollar la lógica "a tu manera (estándar)".

Al margen de esa distinción (tú pareces hablar de conjuntos, yo tengo la necesidad de hablar de signos "de verdad" que pueden escribirse en un papel o meterse en un ordenador, sin apoyarme en ninguna teoría de conjuntos) insisto en que para que alguien entienda qué es una fórmula o un término no necesita entender todo el aparato algebraico que estás montando, como para entender el análisis en \( \mathbb R^n \) no es necesario saber geometría diferencial, y que de hecho es mejor saber análisis en \( \mathbb R^n \) antes de entrar en la geometría diferencial.

Hasta aquí nada de semántica. Todo son símbolos puestos ordenadamente, pero sin significado.

Eso es justo lo que quiero evitar. No hay nada de semántica, pero todo lo que dices tiene una razón de ser porque es "ajustable" a una semántica que has omitido deliberadamente. Lo que yo intento es poner de manifiesto desde el primer momento la existencia de esa semántica que explica realmente lo que estás haciendo. Cuidando de dejar claro que al final cada concepto sintáctico no depende de esa semántica, pero explicando minuciosamente su relación con ella.

Ahora, según la semántica que queramos dotarle a la lógica, podremos introducir una función de interpretación (semántica denotacional), unas reglas de inferencia (semántica operacional) o introducir un isomorfismo con alguna otra estructura matemática (esta es la que más me gusta, espero que podamos hablar de ella más adelante).

Ah, esto responde a algo que te preguntaba más arriba. Me confunde que llames semántica operacional a unas reglas de inferencia. Las reglas de inferencia también tienen su vertiente puramente sintáctica y su interpretación semántica, y ése es también uno de los puntos en los que quiero incidir al comparar ambas partes. Ahora que hablas ya claramente de isomorfismos con estructuras matemáticas ya no hay duda de que concibes todo lo que dices como una parte de la teoría de conjuntos, con lo que tendrás que admitir que tu planteamiento no sirve para fundamentar la teoría de conjuntos, que es casi la única razón por la que me interesa la lógica (aunque no tengo intención de llegar tan lejos en mi artículo).

Otra cosa: perdóname mi "ligereza" a la hora de introducir los conceptos. Comprendo que a un matemático le chirríe mucho mi falta de detalle y la completa ausencia de demostraciones en mis afirmaciones.

Hombre, si tuvieras que demostrar aquí todo lo que has dicho tendrías que escribir todo un libro y entonces te sugeriría que dejaras de escribir aquí y te abriría tu propio artículo en la revista del foro.  ;D

Por ejemplo, mi lenguaje inductivamente generado seguramente que se corresponda al mecanismo de una sucesión de cadenas de signos que mencionas en tu definición de fórmula.

Sí, claro que se corresponde, pero sigo sin entender cuál es la objeción que pones a mi definición de fórmula (que no es mía, también es bastante estándar): una fórmula es una cadena de signos tal que existe una sucesión de cadenas tales que cada cual es una fórmula atómica (concepto definible previamente) o bien se genera a partir de las anteriores mediante ciertas reglas. ¿Cuál es el problema? En el fondo es también una definición inductiva, pero al mismo tiempo es totalmente constructiva, es decir, no depende de un teorema de recursión no evidente por sí mismo y que requiere una demostración previa.

Sólo espero haber dejado claro mi punto de vista de separar la sintaxis de la semántica por un lado y de introducir unas herramientas para definir los lenguajes formales (independientemente de si vamos a usarlos para la lógica de primer orden o para otra cosa).

Sí, está claro. Lo que no veo es la ventaja de hacerlo así. La única ventaja de separar la sintaxis de la semántica es dejar claro que al final ningún concepto sintáctico depende de la semántica, pero creo que eso puede quedar claro sin necesidad de llevar a ciegas al lector hasta que finalmente decides abrirle los ojos y revelarle el sentido que tiene todo lo dicho hasta entonces. Y las herramientas para definir los lenguajes formales, mi opinión (siempre subjetiva) es que son cañones para matar moscas. No veo la ventaja de introducir una teoría abstracta para luego definir unos lenguajes concretos, de modo que lo único que consigues es oscurecer la definición. Además, esto resulta inviable si las herramientas en cuestión requieren teoría de conjuntos y no quieres caer en un círculo vicioso (la teoría de conjuntos se define a partir de un lenguaje formal, unos axiomas y unas reglas de inferencia que no puedes permitirte en lujo de definir en términos de la teoría de conjuntos).

Y que esa separación no es puntual en cada definición, sino estructural en el desarrollo del texto: primero lenguajes formales en general, luego sintaxis del lenguaje de la lógica de primer orden y finalmente las semánticas.

Sí, entiendo perfectamente lo que propones, pero no me gusta nada nada ese planteamiento. De hecho, creo que no has explicado para nada cuáles son según tú las ventajas de hacerlo así? Yo he tratado de explicarte las ventajas de no hacerlo así, aunque tal vez no haya podido concretar todo lo que me hubiera gustado porque mi artículo aún no está muy avanzado, y todavía no puedo ponerte ejemplos auténticamente relevantes del interés que le veo a este enfoque. Éstos aparecerán realmente cuando entre en la definición de las deducciones formales.

También me ha parecido que introduces una complejidad innecesaria al definir las conectivas formalmente en forma prefija \( \rightarrow \beta \gamma \) pero luego muestras en forma infija \( \beta \rightarrow \gamma \). ¿No crees que es mejor introducirlas de forma infija dejando los paréntesis? En todo caso decir la prioridad que tienen y omitir los paréntesis superfluos. En cualquier caso, esto es un detalle menor.

¡Hombre! Yo creo que la auténtica complejidad innecesaria es todo el aparato algebraico que propones para definir unos míseros lenguajes formales ;D.  A mí me parece una simplificación el no tener que preocuparse para nada de los paréntesis a efectos teóricos, y que éstos queden relegados a meros auxiliares taquigráficos, pero, por supuesto, es cuestión de gustos.

Bueno. Me voy a la cama que es tarde.

Dichoso tú que no vives en Valencia y no tienes una verbena justo delante de tu casa.  ::)

Espero no haber dicho muchas tonterías.

En absoluto. Estás defendiendo la más pura ortodoxia sobre el asunto. Pero creo que lo que resultaría realmente enriquecedor es que argumentaras cuáles son a tu juicio las ventajas del planteamiento ortodoxo. En realidad no he pretendido criticar dicho planteamiento, sino que mi opinión es más bien que el planteamiento ortodoxo es un planteamiento técnico, que no responde a los intereses de quien meramente quiera conocer bien la lógica matemática. Volviendo a un ejemplo que te he puesto antes. Yo he estudiado teoría de categorías, y la he estudiado cuando he visto que era útil para tratar ciertos aspectos de la geometría algebraica y la geometría diferencial, y la recomendaré cuando se trate de tratar esos aspectos, pero me parecería un despropósito empezar por teoría de categorías para explicarle a alguien la teoría de grupos o de anillos.

Igualmente, no dudo de que el planteamiento que propones será el más adecuado para estudiar ciertas cuestiones técnicas en las que la lógica formal abstracta sea una herramienta a considerar, pero jamás me he encontrado en un contexto en el que ese punto de vista me haya sido de utilidad frente al estudio directo de los lenguajes formales necesarios en teoría de conjuntos (para fundamentarla y para abordar pruebas de consistencia). Por eso jamás lo recomendaría. Mi punto de vista a la hora de estudiar cualquier teoría matemática siempre ha sido el de no usar herramientas que no demuestren que aportan alguna ventaja frente a técnicas más elementales. Y siempre me ha ido bien así.

17 Marzo, 2013, 05:12 am
Respuesta #6

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,739
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
Hola.

No veo la necesidad de introducir "funtores".

En tu post #1, podría considerarse un "funtor" como un "relator" con una componente adicional \( x_{n+1} \).
El relator sería "verdadero" en el caso de que la variable adicional fuese igual a \( f(x_1,...,x_ n) \), y sería "falso" en caso contrario.

________________

Al asignarle a las constantes, variables y funtores unos objetos del universo U, parece claro cómo funciona esto de la "valuación". (O por lo menos he encontrado el modo de creérmelo).

Luego en el Spoiler del post #3 has "evaluado" los conectores lógicos de modo que siempre te den
V ó F.
¿Estás considerando ahí otro tipo de "valuación"? Dijiste ahí que los conectores interesa que tengan siempre un mismo significado. Veo algo difusa la exposición en esos párrafos. No entiendo, bah.

17 Marzo, 2013, 05:25 am
Respuesta #7

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,739
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
Sobre la definición de "satisfacción", en el punto 4), no me queda claro lo que significa que "para todo objeto del universo se cumple que...".

O sea, el "para todo" ahí me deja algo angustiado. No me molesta un "para todo" en el lado sintáctico,
pero en el lado semántico, no sé qué sentido darle.

____________________

¿Y qué tipo de colecciones de objetos puede ser U?

17 Marzo, 2013, 02:45 pm
Respuesta #8

gdl

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 13
  • Karma: +0/-0
Ésa era justamente mi intención, escribir algo distinto, porque para escribir lo mismo que ya está escrito en los libros, para eso ya están los libros. Naturalmente, hacer algo distinto sólo por no hacer lo mismo sería una frivolidad por mi parte. Mi intención de hacer algo distinto está motivada a su vez porque tengo la sensación (generada en gran parte por consultas sobre lógica que he visto hacer en este foro) que quienes estudian lógica siguiendo los estándares que se ven en los libros acaban con una concepción de la lógica que, a mi juicio (siempre discutible) está bastante deformada, y mi intención era enfatizar los aspectos que los libros no enfatizan por su forma de exposición.

Completamente de acuerdo contigo en este punto. Sin embargo, por favor, distingamos claramente el aspecto docente del aspecto, digamos, filosófico o de perspectiva con el que se aborda el tema. Que tengan dudas sobre la lógica puede significar que el libro que usen no sea de la calidad suficiente, no que el punto de vista abordado sea malo (o el profesor que les enseñe no lo haga bien, pero mejor no sigo por aquí).

Por lo que he podido leerte, creo que tu juicio es de bastante peso, me gustaría saber los aspectos que has percibido como erróneos siguiendo el procedimiento habitual. Probablemente yo mismo sea uno de esos "deformados". Jejeje.

Te aclaro yo también la perspectiva desde la que estoy diseñando el hilo: mi intención es explicar la lógica como formalización del razonamiento matemático y exclusivamente con la finalidad de servir de fundamento a la matemática formal. Evidentemente, con la lógica se pueden hacer muchas más cosas que fundamentar las matemáticas, pero mi interés es exclusivamente explicar qué es y por qué es como es la lógica que sirve de fundamento a la matemática formal.
...
Yo tampoco. Como digo, la lógica "en sí misma" tampoco me ha interesado nunca. Me interesa como fundamento de la matemática y como herramienta auxiliar en el estudio de la teoría de conjuntos. La lógica "en sí misma" o "en abstracto", siempre me ha parecido bastante insulsa, pero eso es, por supuesto, un juicio personal y subjetivo que sólo pretende explicar que, de hecho, nunca he visto nada interesante en ella.

Es una aproximación muy correcta. Realmente la lógica es insulsa y hasta tediosa. No obstante, como herramienta que es y que usamos, hay que tenerla "engrasada". Por eso alabo tu dedicación al tema.


Sí, la razón por la que la lógica matemática sirve para algo es precisamente porque permite prescindir completamente de la semántica, y la forma más clara de ponerlo de manifiesto es describir la sintaxis sin mencionar para nada la semántica. Así lo hago en mi libro de lógica, pero precisamente en este hilo quería enfatizar lo que se pierde de vista al proceder de ese modo: aunque la sintaxis sea al final independiente de la semántica, es fundamental comprender que está completamente motivada por la semántica. Una de las "deformaciones" a las que, siempre a mi juicio, induce la presentación usual de la lógica (primero sintaxis sin referencia alguna a la semántica y luego semántica) es que uno se queda con la sensación de que todas las definiciones sintácticas son arbitrarias, que uno define el modus ponens como lo define, pero que nada hubiera impedido definirlo como que de \( \alpha\rightarrow \beta \) y \( \beta \) se deduce \( \alpha \), por ejemplo.
...
Lo que pretendo mostrar en el hilo que estoy escribiendo es que todas las definiciones sintácticas están motivadas por el significado pretendido de los lenguajes formales, que aunque podamos definir un relator como un signo que simplemente tiene la etiqueta de relator, lo cierto es que un relator es un signo que pretende ser interpretado como una relación y que no es necesario ocultar o posponer eso para dejar claro que no es necesario hablar de relaciones para definir los lenguajes formales.

En esto que dices llego a dos ideas que al final son la misma.

La primera es que la sintaxis SÍ es arbitraria. De hecho puedes definir algunas sintaxis muy, muy raras. Ponerlo todo en notación prefija, postfija o, como información que es, en una secuencia de unos y ceros. Ahora bien, ¿por qué elegimos una en concreto? Realmente por una evolución histórica. De hecho, las fórmulas lógicas estándar se pueden leer como frases del lenguaje natural.

\( \forall x (hombre(x) \rightarrow mortal(x)) \)
Para todo x se cumple que si x es hombre entonces x es mortal.

Desde ese punto de vista la sintaxis elegida es, simplemente, una abreviatura del lenguaje natural. Del estudio de estas abreviaturas se llega a los lenguajes formales y la sintaxis de la lógica es uno de esos lenguajes formales.

La segunda idea es que SÍ es posible definir el modus ponens de otra forma. Obtienes otra lógica. Quizás útil. Quizás inconsistente. Quizás trivial. Simplemente es otra lógica, con otra semántica. De nuevo estamos en lo mismo, ¿por qué elegimos de todas las definiciones posibles las que elegimos? Aquí habría que mencionar que estudiando las frases del lenguaje natural vemos que, cuando nos restringimos a la lógica de primer orden, podemos asignarles un valor de verdad y que ese valor depende de las partes constituyentes de la frase. Vamos. Que tenemos una lógica veritativo funcional. ¿Cómo mantener ese valor de verdad en el lenguaje abreviado? ¿Cómo calcularlo a partir de las partes constituyentes de la fórmula abreviada? Ahí está la explicación de hacer esas definiciones y no otras.

Estas dos ideas son realmente la misma: tenemos una paleta de posibilidades y elegimos la que más nos interesa para llegar a tal objetivo. De la forma en la que está abordado el artículo, según entiendo, se desecha la paleta porque vamos directo al objetivo. En ese proceso de ocultación de los caminos laterales, no estoy muy seguro si estamos ganando o perdiendo comprensión. Vamos como un burro con anteojeras.

Si quieres eso, sólo tienes que leer mi libro de lógica, pero no era mi intención copiar o resumir mi libro de lógica, lo que planteas era justo lo contrario de lo que quería hacer. En realidad no era mi intención exactamente "mezclar" la sintaxis con la semántica, sino presentarlas paralelamente, o más precisamente, con la semántica siempre un paso por delante de la sintaxis, cuidando de dejar claro que al final la sintaxis no se apoya en la semántica, pero incidiendo sobre todo en que toda definición sintáctica está motivada por un concepto semántico. Defino modelo antes que fórmula porque para entender qué es realmente una fórmula no basta asumir que es una cadena de signos que satisface ciertos principios sintácticos de construcción, sino que la idea de fondo es que una fórmula es una cadena de signos susceptible de tener un significado en un modelo. Las ideas de ese tipo son las que se difuminan con la exposición estándar que propones y son las que yo pretendo enfatizar.

Ojeé tu libro de lógica hace años. No sé si lo has actualizado. Realmente recuerdo poco de él.

Sobre la introducción de semántica antes que sintaxis, creo que es dual (chiste matemático malo) a introducir la sintaxis antes que la semántica. En el enfoque que has tomado al final debes decir que la sintaxis no se apoya en la semántica. En la exposición estándar debes decir que la sintaxis no es arbitraria y se busca para que se le pueda dotar de semántica luego.

Al no hacerlo así se hace de forma subconsciente e incontrolada lo que es mejor, siempre a mi juicio, hacer de forma consciente y controlada: aunque no se hable para nada de semántica al exponer la sintaxis, lo cierto es que todo aquel que ve una fórmula de acuerdo con la definición sintáctica correspondiente, se da cuenta de que puede "leerla" como una afirmación, aunque oficialmente se le asegura que no es más que una cadena de signos, pero cualquier reflexión sobre esto queda prohibida por la prohibición de mencionar la semántica. En las cuestiones que han aparecido hasta ahora esto no es especialmente grave, pero creo que en cuanto se entra en el concepto de deducción, el obstinarse en no motivarlo semánticamente introduce muchos malentendidos.

Eso es completamente cierto. Tendemos a darle semántica inconscientemente a la sintaxis y luego hay sorpresas cuando la semántica no se ajusta a nuestra intuición. Y, ahora es cuando me vas a matar, creo que eso es bueno. Por una sencilla razón: hace al estudiante desconfiar de su intuición. El caso paradigmático es la implicación material cuando "falso implica verdadero" es verdadero.

Cierto, pero eso es como cuando uno dice "número" refiriéndose a "número real" porque no va a tratar con números complejos. El hilo se titula Lógica de primer orden, y hay que entender que cuando digo "lenguaje formal", quiero decir "lenguaje de primer orden" y, más concretamente, un lenguaje formal del tipo que he definido, sin más pretensiones de generalidad.
...
No. Todo lo que has dicho hasta aquí es totalmente coherente y simplemente responde a un punto de vista distinto del que yo quiero seguir, pero en esto último hay un pequeño error conceptual. No puede hablar de "el lenguaje formal de la lógica de primer orden" ni mucho menos darle un nombre, porque no es un único lenguaje formal, sino que estoy tratando con infinitos lenguajes posibles, según las constantes, relatores o funtores que posean. No es uno solo.

Tienes toda la razón del mundo. Escribir de memoria tiene estas cosas.

Sí, distinguir entre lógica con o sin igualdad es totalmente estándar, pero yo pregunto ¿para qué sirve la lógica de primer orden sin igualdad? Podrás decirme que la distinción sirve para ver cuáles son los requisitos lógicos específicos para tratar con la igualdad, pero no estoy interesado en diseccionar la lógica de ese modo. Si los únicos lenguajes formales que voy a usar tienen igualdad, no veo el interés de estudiar primero lenguajes sin igualdad. Es como si antes de estudiar grupos se considerara conveniente estudiar semigrupos a pesar de que nunca vas a trabajar con un semigrupo que no sea un grupo. En ese contexto, yo trabajaría directamente con grupos, y no me importaría si algunas de las cosas que digo valieran también para semigrupos que no fueran grupos.

Ten piedad con el lector. Este lector luego, en otro contexto, se encuentra con un semigrupo y recordará algo de los grupos pero... ¿esto que leí también valía para los semigrupos o sólo era para los grupos? Hace poco empecé a leer un libro sobre análisis funcional y empezaron con los espacios métricos. El autor empezó con muchos teoremas sobre estos espacios que realmente sólo requerían que la topología fuera Hausdorff (ya sabes, cosas de límite de secuencias único y demás). Al final no sabía si cada teorema realmente necesitaba que el espacio fuera métrico o Hausdorff. Tuve que dejar el libro porque me estaba liando conocimientos que ya tenía. ¿Qué trabajo le habría costado definir un espacio de Hausdorff y decir que los espacios métricos son Hausdorff con su topología asociada?

Cada cosa debe estar en su estructura, aunque tampoco sin pasarse. ¿Cuándo es una estructura suficientemente importante para dejarla? Ahí, la verdad, está la opinión de cada uno. Si la definición es simple, creo que es mejor dejarlo. Si el lector está interesado en, no sé, semigrupos, ya explorará y descubrirá las relaciones de Green y esas cosas. En el caso que nos concierne, ¿es suficientemente importante hablar de los lenguajes formales aparte? La verdad, yo creo que sí. ¿Es suficientemente importante hablar de la lógica sin igualdad? Ahí ya tengo mis dudas dados los objetivos que te has planteado con el artículo.


Sí, esto que planteas es bastante estándar y propio de los libros de lógica, y aquí entramos en una mera cuestión de "gustos", y es que debo decirte que eso me parece "horripilante" (y no es una crítica hacia ti, naturalmente, que estás defendiendo la ortodoxia). ¿Realmente aporta a algo a alguien ese planteamiento abstracto que propones? Yo he visto a gente en este foro pregunta dudas sobre ejercicios en ese contexto, y he procurado resolverlas, pero en el fondo pienso ¿y a qué clase de profesores se les ocurrirá hacer perder el tiempo a esta gente con problemas tan tontos en lugar de ir directamente a lo que interesa, a lo que aporta algo? Insisto en que son apreciaciones subjetivas, pero mi impresión es que estar dándole vueltas a lenguajes formados por as bes y ces, es una pérdida de tiempo, cuando puedes ir directamente a los lenguajes formales que interesan. En todo caso sería al revés: sólo cuando alguien ha asimilado las ideas importantes sobre lenguajes formales "de verdad", de los que pueden usarse para formalizar razonamientos, uno puede interesarse en versiones abstractas de esos lenguajes. Es como si a alguien que no sabe nada de grupos, anillos y espacios vectoriales empiezas a hablarle de categorías. Es más sensato demostrarle a uno el teorema de isomorfía de grupos, y el de anillos, y el de espacios vectoriales y, a lo sumo, en un futuro, hacerle ver que todos son casos particulares de un teorema sobre categorías abelianas, si es que uno llega a estudiar algo en el que el punto de vista de las categorías abelianas le aporta realmente algo.

Personalmente creo que aporta mucho el enfoque abstracto. Más en este caso en el que son unas pocas líneas de definición y llegamos a resultados bastante interesantes.

Sobre los profesores que ponen problemas tontos, desconozco si es por torpeza propia o del alumnado. Si es en el primer caso, no tienen perdón. En el segundo, en fin. De cualquier modo, convendrás conmigo que la sintaxis de la lógica de primer orden puede resultar compleja a alguien que no esté muy curtido en matemáticas. Es habitual empezar con cosas simples y avanzar hacia las complejas.

Nota al margen: creo que las categorías son de las cosas más bellas que hay en matemáticas. El grado de abstracción y la dificultad de su comprensión son (desde mi punto de vista) recompensadas por los frutos que da. Por otra parte, es cierto que son un tema arduo y yo mismo estoy deseando encontrar un libro menos abstracto sobre el tema.

De hecho, si algo me deja insatisfecho de la forma en que presento la lógica es el no poder ser un poco menos abstracto de lo que estoy siendo. Me gustaría poder (o saber) presentar las cosas de una forma mucho más elemental, que no requiriera abstracciones innecesarias, pues lo que pretendo es explicar algo muy concreto y muy intuitivo, algo que no requiere tratar con lenguajes sin significado, y aun así cualquier intento de precisar lo que es una fórmula o un modelo puede "echar para atrás" a más de uno, a pesar de que la idea de fondo la tiene que entender todo el mundo.

Esto es contrario a mi punto de vista, pero sigue el camino de "no hay paleta" y somos "burros con anteojeras" por un camino ya pensado. Tiempo habrá de quitar las anteojeras y enseñar la paleta. Habla de frases del lenguaje natural. Trata la sintaxis como una abreviatura de las frases. Descubre cómo razonamos con el lenguaje natural e imita ese razonamiento con las reglas de inferencia sobre las abreviaturas.

Sí, conozco esta forma de hacer las cosas, y siempre he tratado de evitarla a toda costa. Hay un aspecto en todo esto del que no sé si eres consciente. No sé si cuando escribes todo lo que escribes estás pensando en ello como afirmaciones formales en una teoría de conjuntos que te permite hablar de uniones, intersecciones, conjuntos numerables, definiciones inductivas, etc. Si es así, tenemos un problema serio, porque una de las utilidades de la lógica de primer orden es construir la teoría de conjuntos que (tal vez, si acierto al interpretar cómo concibes lo que dices) es necesaria para que puedas desarrollar la lógica "a tu manera (estándar)".

Al margen de esa distinción (tú pareces hablar de conjuntos, yo tengo la necesidad de hablar de signos "de verdad" que pueden escribirse en un papel o meterse en un ordenador, sin apoyarme en ninguna teoría de conjuntos) insisto en que para que alguien entienda qué es una fórmula o un término no necesita entender todo el aparato algebraico que estás montando, como para entender el análisis en \( \mathbb R^n \) no es necesario saber geometría diferencial, y que de hecho es mejor saber análisis en \( \mathbb R^n \) antes de entrar en la geometría diferencial.

Sí. Yo hablo de conjuntos. Otra cosa es que, por ignorancia, no haya puesto condiciones más relajadas. Supongo que en la sintaxis podría hablar de "una colección no vacía bien definida de símbolos cualesquiera" signifique lo que quiera que eso signifique, ya que estamos hablando en un lenguaje natural y no en un lenguaje formal.

En la semántica, si queremos que sea denotacional, debemos relacionar cada fórmula con un objeto matemático (que casi siempre será un conjunto). Si queremos semántica operacional, sólo necesitamos transformar las fórmulas sintácticamente. Otra cosa es que esas transformaciones sean correctas y completas.

Eso es justo lo que quiero evitar. No hay nada de semántica, pero todo lo que dices tiene una razón de ser porque es "ajustable" a una semántica que has omitido deliberadamente. Lo que yo intento es poner de manifiesto desde el primer momento la existencia de esa semántica que explica realmente lo que estás haciendo. Cuidando de dejar claro que al final cada concepto sintáctico no depende de esa semántica, pero explicando minuciosamente su relación con ella.

Ya hemos hablado de esto. La dualidad de explicar antes sintaxis o semántica.

Ah, esto responde a algo que te preguntaba más arriba. Me confunde que llames semántica operacional a unas reglas de inferencia. Las reglas de inferencia también tienen su vertiente puramente sintáctica y su interpretación semántica, y ése es también uno de los puntos en los que quiero incidir al comparar ambas partes. Ahora que hablas ya claramente de isomorfismos con estructuras matemáticas ya no hay duda de que concibes todo lo que dices como una parte de la teoría de conjuntos, con lo que tendrás que admitir que tu planteamiento no sirve para fundamentar la teoría de conjuntos, que es casi la única razón por la que me interesa la lógica (aunque no tengo intención de llegar tan lejos en mi artículo).

No creo que sea estándar llamar "operacional" a las reglas de inferencia, pero desde un punto de vista computacional son precisamente eso: transformaciones sintácticas. Ojo que las reglas de inferencia podrían ser la única semántica necesaria para la lógica de primer orden. Sin embargo, es más común dotarla de una semántica denotacional (dándole un valor a cada fórmula) y luego comprobar que ambas aproximaciones son equivalentes mediante demostraciones formales de corrección y completitud.

Mi planteamiento no sirve para fundamentar la teoría de conjuntos a menos que (y esta es mi opinión nada experta)

1) Trates los lenguajes formales como formas de escribir símbolos sobre papel o pantalla. Creo que es posible hacerlo sin mencionar ningún concepto matemático y sólo usando los símbolos de manera informal, pero estricta.
2) Uses las reglas de inferencia como semántica. Olvídate de que \( \overline N \) sea Napoleón. \( \overline N \) son símbolos en papel. No hay interpretación de los símbolos. La semántica es cómo trabajes con esos símbolos.

En este caso sólo estaríamos hablando de cómo escribir las cosas de manera formal. No hay conceptos matemáticos. Sólo una normativa muy concreta de cómo escribir sobre el papel. El que esta normativa se corresponda a un tipo de pensamiento lógico es algo que veo difícil de demostrar, pero fácil de justificar.


Sí, claro que se corresponde, pero sigo sin entender cuál es la objeción que pones a mi definición de fórmula (que no es mía, también es bastante estándar): una fórmula es una cadena de signos tal que existe una sucesión de cadenas tales que cada cual es una fórmula atómica (concepto definible previamente) o bien se genera a partir de las anteriores mediante ciertas reglas. ¿Cuál es el problema? En el fondo es también una definición inductiva, pero al mismo tiempo es totalmente constructiva, es decir, no depende de un teorema de recursión no evidente por sí mismo y que requiere una demostración previa.

En este caso no estoy tan enfocado en la definición concreta de lenguaje definido inductivamente (que si mediante una construcción o usando un teorema de recursión) como en repetir una construcción similar en dos definiciones (la de término y fórmula). Creo, aunque esto ya es opinión personal, que sería más provechoso sacar de estas dos definiciones la idea de lenguaje definido inductivamente y usarla luego en cada una de esas definiciones.

Al final terminas con tres definiciones en vez de dos, pero haces ver al lector que estás usando el mismo mecanismo en ambas. Es más, puedes razonar sobre este mecanismo (por ejemplo, para realizar demostraciones por inducción estructural).

Sí, está claro. Lo que no veo es la ventaja de hacerlo así. La única ventaja de separar la sintaxis de la semántica es dejar claro que al final ningún concepto sintáctico depende de la semántica, pero creo que eso puede quedar claro sin necesidad de llevar a ciegas al lector hasta que finalmente decides abrirle los ojos y revelarle el sentido que tiene todo lo dicho hasta entonces. Y las herramientas para definir los lenguajes formales, mi opinión (siempre subjetiva) es que son cañones para matar moscas. No veo la ventaja de introducir una teoría abstracta para luego definir unos lenguajes concretos, de modo que lo único que consigues es oscurecer la definición. Además, esto resulta inviable si las herramientas en cuestión requieren teoría de conjuntos y no quieres caer en un círculo vicioso (la teoría de conjuntos se define a partir de un lenguaje formal, unos axiomas y unas reglas de inferencia que no puedes permitirte en lujo de definir en términos de la teoría de conjuntos).
...
Sí, entiendo perfectamente lo que propones, pero no me gusta nada nada ese planteamiento. De hecho, creo que no has explicado para nada cuáles son según tú las ventajas de hacerlo así? Yo he tratado de explicarte las ventajas de no hacerlo así, aunque tal vez no haya podido concretar todo lo que me hubiera gustado porque mi artículo aún no está muy avanzado, y todavía no puedo ponerte ejemplos auténticamente relevantes del interés que le veo a este enfoque. Éstos aparecerán realmente cuando entre en la definición de las deducciones formales.
...
En absoluto. Estás defendiendo la más pura ortodoxia sobre el asunto. Pero creo que lo que resultaría realmente enriquecedor es que argumentaras cuáles son a tu juicio las ventajas del planteamiento ortodoxo. En realidad no he pretendido criticar dicho planteamiento, sino que mi opinión es más bien que el planteamiento ortodoxo es un planteamiento técnico, que no responde a los intereses de quien meramente quiera conocer bien la lógica matemática. Volviendo a un ejemplo que te he puesto antes. Yo he estudiado teoría de categorías, y la he estudiado cuando he visto que era útil para tratar ciertos aspectos de la geometría algebraica y la geometría diferencial, y la recomendaré cuando se trate de tratar esos aspectos, pero me parecería un despropósito empezar por teoría de categorías para explicarle a alguien la teoría de grupos o de anillos.

Igualmente, no dudo de que el planteamiento que propones será el más adecuado para estudiar ciertas cuestiones técnicas en las que la lógica formal abstracta sea una herramienta a considerar, pero jamás me he encontrado en un contexto en el que ese punto de vista me haya sido de utilidad frente al estudio directo de los lenguajes formales necesarios en teoría de conjuntos (para fundamentarla y para abordar pruebas de consistencia). Por eso jamás lo recomendaría. Mi punto de vista a la hora de estudiar cualquier teoría matemática siempre ha sido el de no usar herramientas que no demuestren que aportan alguna ventaja frente a técnicas más elementales. Y siempre me ha ido bien así.

Separar la sintaxis de la semántica no implica que tengas que ocultarle la intencionalidad que hay detrás. Yo lo veo más como un asunto de organización. Dejando a un lado la necesidad de la teoría de conjuntos para las definiciones que he propuesto, algunas de las ventajas que me vienen a la mente son:

1) Definición. Basta con darle un nombre a las cosas para que podamos usarlas y estudiarla con mayor comodidad. Si estás usando un lenguaje formal, define lenguajes formales. Si estás usando una sintaxis, define la sintaxis. Dale nombre.

2) Reutilización. Los lenguajes formales que puedes definir no son únicamente los de la lógica de primer órden. Igualmente, una misma sintaxis puede tener varias semánticas. Por ejemplo, puedes usar una lógica intuicionista en vez de la lógica clásica con la misma sintaxis.

3) Guía. Una vez que le damos la pista al lector del nombre de una de las estructuras que usamos, el lector podrá investigar. Podrá buscar qué es una semántica operacional, o un lenguaje definido inductivamente, etc.

4) Referencia. Igualmente, al organizar el discurso y separarlo en partes, al hablar de un tema sólo hacemos referencia a la parte que corresponde. Que alguien no entienda qué es un término puede significar realmente que no entiende lo que es un lenguaje definido inductivamente.

5) Concreción. Hemos tardado un poco más en definir lo que es un lenguaje formal, pero luego definimos la sintaxis con mucha más brevedad. A menor brevedad, menos margen para ambigüedades, lapsus, errores de comprensión o de cualquier otro tipo.

¡Hombre! Yo creo que la auténtica complejidad innecesaria es todo el aparato algebraico que propones para definir unos míseros lenguajes formales ;D.  A mí me parece una simplificación el no tener que preocuparse para nada de los paréntesis a efectos teóricos, y que éstos queden relegados a meros auxiliares taquigráficos, pero, por supuesto, es cuestión de gustos.

Ciertamente es un asunto menor.





Todo lo que estamos hablando es un tema muy interesante. Me gustaría poder dedicarle algo de tiempo a definir lenguajes formales sin hacer referencia a otra cosa que símbolos escritos sobre el papel y frases como "escribir delante" o "escribir detrás". Luego, las reglas de inferencia de la misma manera. Vamos. Tener un sistema formal descrito sin usar objetos matemáticos.

17 Marzo, 2013, 02:46 pm
Respuesta #9

Carlos Ivorra

  • Administrador
  • Mensajes: 11,114
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
    • Página web personal
No veo la necesidad de introducir "funtores".

En tu post #1, podría considerarse un "funtor" como un "relator" con una componente adicional \( x_{n+1} \).
El relator sería "verdadero" en el caso de que la variable adicional fuese igual a \( f(x_1,...,x_ n) \), y sería "falso" en caso contrario.

Lo que dices es cierto. Es posible desarrollar la lógica de primer orden con o sin funtores sin perder capacidad expresiva en el segundo caso. Un argumento más a tu favor es que, si lo que pretendemos es fundamentar la teoría de conjuntos, el lenguaje de la teoría de conjuntos no tiene funtores. No obstante, lo estándar es estudiar lenguajes con funtores. En estos casos, si los dos caminos llevan a la meta, la única razón para elegir uno u otro es juzgar cuál es más "simple" o "elegante" o "cómodo", etc., pero todo son criterios subjetivos. Te voy a decir por qué me parece buena idea considerar funtores, pero quede claro que son criterios subjetivos y nadie puede discutirte que si nos empeñamos en borrarlos del mapa podemos hacerlo sin perder nada esencial.

Considera esta fórmula:

\( \forall xyx(x+(y+z)=(x+y)+z) \)

Si la queremos escribir sin funtores, habría que empezar por transformarla así:

\( \forall xyzuv(u=y+z\land v=x+y\rightarrow x+u=v+z) \),

y ahora podemos reemplazar el funtor \( + \) por un relator triádico \( S \), de modo que queda

\( \forall xyzuvw(S(y,z,u)\land S(x,y,v)\rightarrow (S(x,u,w)\leftrightarrow S(v,z,w))) \)

Coincidirás conmigo en que, aunque pone lo mismo, es mucho menos claro. Podrías decir que lo mismo sucede si reemplazamos los conectores \( \lor,\land,\leftrightarrow \) por sus definiciones, que una fórmula muy clara se puede convertir en un galimatías. Equivalentemente, podríamos plantearnos considerar a los funtores, no como signos de un lenguaje formal, sino como abreviaturas taquigráficas, similares a los paréntesis, el conjuntor, etc.

No digo que no sea viable, pero personalmente no me gusta esa opción, porque todas las abreviaturas taquigráficas que vengo empleando son triviales, en el sentido de que uno las ve y sabe qué tiene que hacer para suprimirlas, aunque suprimirlas todas pudiera ser tedioso y laborioso. En cambio, considerar que \( x+y \) es una abreviatura es conceptualmente más complejo. Lo cierto es que \( x+y \) no sería una abreviatura de nada, sino que habría que considerar que toda fórmula en la que aparece \( x+y \) es una abreviatura de otra en la que no aparecería \( x+y \), pero sin que \( x+y \) en sí mismo fuera nada "oficialmente". Personalmente, prefiero incluir funtores y no considerar esta situación.

Por otro lado, en teoría de conjuntos trabajas con expresiones de la forma \( x\cup y \), \( \mathcal Px \), etc. ¿cómo hay que entender estos signos? La solución que yo prefiero es considerarlos como descripciones (he preferido posponer en mi hilo toda referencia al descriptor, pero me ocuparé de ello más adelante), pero si uno prefiere evitar descriptores entonces debe considerarlos como nuevos signos definidos, es decir, como funtores de los que se demuestra que son eliminables en cierto sentido muy preciso. Si uno renuncia a los descriptores y a los funtores, esos signos quedan en un status un tanto fantasmagórico para mi gusto, aunque no deja de ser cierto que si uno quiere ir por ahí, puede hacerlo.

Al asignarle a las constantes, variables y funtores unos objetos del universo U, parece claro cómo funciona esto de la "valuación". (O por lo menos he encontrado el modo de creérmelo).

Luego en el Spoiler del post #3 has "evaluado" los conectores lógicos de modo que siempre te den
V ó F.
¿Estás considerando ahí otro tipo de "valuación"? Dijiste ahí que los conectores interesa que tengan siempre un mismo significado. Veo algo difusa la exposición en esos párrafos. No entiendo, bah.

No tengo muy clara cuál es tu duda. Si lo tuviera, trataría de modificar el texto para aclararlo, pero no sé muy bien qué debo aclarar.

Lo que digo allí es que, en principio, podríamos haber completado la definición de modelo diciendo que a cada conector diádico, como \( \leftrightarrow \) o \( \land \) o \( \lor \) (si decidiéramos incluirlos como signos primitivos del lenguaje) les asigna una tabla de verdad, es decir, una función que a cada par de valore verdadero/falso les asigna un valor de verdadero/falso. De este modo, podríamos considerar un modelo en el que el conector \( \rightarrow \) se interpreta con tal o cual tabla de verdad, y entonces para asignar un valor de verdad a cada fórmula que los contuviera habría que usar la tabla de verdad que el modelo le asigna al conector.

Sin embargo, no hacemos nada parecido. En la definición de modelo no asignamos una tabla de verdad a \( \rightarrow \) porque no pretendemos que tenga una tabla distinta en cada modelo, sino que en todos va a ser interpretado con la misma tabla de verdad. Por ello, la tabla de verdad que interpreta cada conector no aparece en la definición de cada modelo, sino en la definición de satisfacción en un modelo.

Si sigue sin estar claro, dilo y lo hablamos. En cualquier caso, cuando tenga claro cuál era tu duda trataré de aclararla en el hilo.

Sobre la definición de "satisfacción", en el punto 4), no me queda claro lo que significa que "para todo objeto del universo se cumple que...".

O sea, el "para todo" ahí me deja algo angustiado. No me molesta un "para todo" en el lado sintáctico,
pero en el lado semántico, no sé qué sentido darle.
____________________

¿Y qué tipo de colecciones de objetos puede ser U?

Las dos preguntas que haces están muy estrechamente conectadas. Ante todo, una observación que no responde honestamente a tu pregunta, pero que creo que conviene poner de manifiesto:

Todo cuanto digo en el hilo se puede entender de dos maneras, como afirmaciones metamatemáticas que no dependen de ninguna teoría formal previa, o bien como afirmaciones en ZF. Con mínimas adaptaciones (todas las cuales las puedes encontrar en mi hilo de teoría de modelos), todo cuanto digo puede entenderse como que estoy hablando de ciertas estructuras conjuntistas: los signos de un lenguaje formal son conjuntos, las cadenas de signos son sucesiones de signos en el sentido conjuntista definidas de forma aceptable en ZF, etc. Si lo entiendes así, tú mismo tendrás respuestas obvias a tus dos preguntas. "Para todo" significa lo que siempre significa "para todo" en ZF y U puede ser cualquier conjunto de los que se tratan en ZF. Digo esto porque, aun en el supuesto de que te resistas a aceptar que lo que digo es metamatemáticamente aceptable, siempre puedes concebirlo como definiciones y teoremas en ZF (cuya formalización no ofrece ningún problema no trivial) y algo es algo. Es verdad que viéndolo así no sales del círculo vicioso de necesitar ZF para definir ZF, pero si aceptas que ZF está ahí, entonces tienes que aceptar que todo lo que digo tiene sentido en ZF.

Ahora bien, si ésa fuera mi respuesta me estaría saliendo por la tangente. Tus preguntas tienen perfecto sentido y no son triviales cuando consideramos lo que digo en el hilo como afirmaciones independientes de cualquier lenguaje formal. Y de hecho es así como hay que entenderlas si queremos que todo eso sirva realmente para definir ZF.

Entrando ya en ello, como digo, tus preguntas son en realidad la misma. ¿Qué tipo de colecciones de objetos puede ser U? La respuesta es precisamente cualquiera que esté bien definida hasta el punto de que podamos asegurar que tiene sentido decir "para todo objeto de U" y "existe un objeto de U tal que..." Así, la respuesta a tu segunda pregunta responde a la primera. No te puedo decir a priori qué significa "para todo objeto de U", sino que la garantía de que esto tiene sentido tiene que estar en que U sea realmente una colección de objetos bien definida.

La lógica no puede definir qué significa "para todo". La lógica consiste en que si "para todo" significa algo en un determinado contexto (y entonces puedes construir un modelo de un lenguaje formal realmente bien definido) entonces la lógica te dirá cómo se comporta esa noción de "para todo", pero el sentido del "para todo" lo tienes que aportar tú, no te lo puede dar la lógica.

En este sentido, lo que estamos haciendo es lo siguiente: damos unas definiciones puramente sintácticas que incluyen reglas que especifican cómo deben usarse los signos \( \forall \) y \( \exists \), y probamos que, en la medida en que los signos de nuestro lenguaje admitan una interpretación como afirmaciones sobre unos objetos bien definidos hasta el punto de que las afirmaciones del tipo "para todo" y "existe" tengan un sentido objetivo y unívoco, entonces la interpretación de los signos \( \forall \) y \( \exists \) es precisamente ese "para todo" y "existe" a los que suponemos un significado preciso.

A su vez, el hecho de que no necesitemos la semántica para manipular sintácticamente las expresiones formales, se traduce en que podemos dar unos axiomas para la teoría de conjuntos y decir: si existen unos objetos bien definidos (de modo que tenga sentido hablar de la totalidad de ellos, es decir, de hacer afirmaciones del tipo "para todo" y "existe") que cumplan estos axiomas, entonces los teoremas de la teoría de conjuntos hablan de ellos y cuando demostramos un teorema que empieza por \( \forall x \), entonces lo que viene después vale para todos esos objetos. Ahora bien, si sucede que no tienes conocimiento de unos objetos concretos que cumplan esos axiomas, es decir, si no eres capaz de atribuir un significado específico a una afirmación del tipo "para todo conjunto...", no te preocupes, puedes trabajar con los axiomas de ZFC sin que tu incapacidad para interpretar sus signos te perjudique en nada. Lo cual es una gran ventaja porque yo me reconozco incapaz de interpretar los signos del lenguaje de ZF. No conozco unos objetos a los que pueda llamar "los conjuntos" y que cumplan los axiomas de ZF.

A la vista de esto, uno podría pensar que hablar de modelos de un lenguaje formal es una pérdida de tiempo, ya que cuando nos enfrentamos al lenguaje formal (y los axiomas) que realmente interesa (el de una teoría de conjuntos), no conocemos realmente ningún modelo, por lo que toda la teoría que hemos desarrollado es vacía cuando trata de aplicarse al caso que realmente interesa, pero no es exactamente así. La lógica nos enseña que si la teoría de conjuntos es consistente, entonces tiene un modelo, es decir, podemos razonar que existen unos objetos bien definidos (en los que "para todo conjunto" tiene un sentido muy concreto) y que verifican los axiomas de la teoría de conjuntos. Lo malo es que la prueba (aunque es constructiva) no es efectiva, y no nos permite "calcular" explícitamente las relaciones de ese modelo, pero eso no quita para que tengamos una prueba constructiva de que hay modelos, por lo que nuestros axiomas (si son consistentes) tienen un significado posible, aunque éste pueda distar mucho que lo que se imaginaría uno ingenuamente (el modelo que obtenemos es numerable, cuando uno esperaría ingenuamente que fuera no numerable, etc.)