Versión corta: tienes razón, hay un problema serio aquí, y se reduce a las reglas exactas que usamos para formar los términos. Lo has planteado en términos de trivialización ("¿no reduce esto la prueba de la asociatividad a la reflexividad de " $=$ "), pero es un problema más serio que eso, incluso: en última instancia nos permitirá demostrar que cada La operación binaria (infija) es asociativa, lo que es claramente una locura $^*$ (ver mis comentarios debajo del OP). Así que hay que resolver algo aquí.
En última instancia, queremos no considerar expresiones como " $x+y+z$ " para ser términos en absoluto (lo que tiene sentido, porque hasta que no hayamos demostrado que $+$ es asociativo no hay razón para esperar que " $x+y+z$ " para referirse inequívocamente a cualquier cosa).
Así que no es que " $(a+b)+c=a+b+c$ " es falso sino que es gramaticalmente incorrecto .
Desgraciadamente, algunas presentaciones pasan por alto este punto, lo que de hecho provoca un grave problema. Creo que el enfoque más sencillo es prohibir por completo la notación infija (de modo que " $x+y$ "es un término del "metalenguaje", pero no del lenguaje formal que utilizamos). Esto tiene el inconveniente de ser difícil de leer, pero rápidamente llegarás al punto en que te sentirás cómodo utilizando la notación infija informal como abreviatura de las expresiones formales en cuestión.
La sintaxis que presento a continuación es sólo una opción entre muchas otras:
Dada una lengua $L$ compuesto por símbolos constantes, símbolos de función (con arias) y símbolos de relación (con arias), definimos la clase de $L$ -términos como sigue:
-
Cada símbolo constante en $L$ es un término. (Tenga en cuenta que puede no haber ninguno de ellos).
-
Cada variable es un término. (Aquí las variables existen independientemente de la lengua $L$ En otras palabras, las variables son "símbolos lógicos" como $\forall$ , $\wedge$ , $($ y $=$ .)
-
Esta es la clave : si $t_1, ..., t_n$ son términos y $f$ es un $n$ -símbolo de la función primaria en $L$ entonces $f(t_1, ..., t_n)$ es un término.
-
Ninguna cadena de símbolos es un término a no ser que lo exijan las reglas anteriores.
Tenga en cuenta que esta sintaxis no permite símbolos infijos La expresión " $x+y$ " es gramaticalmente incorrecto, y debería escribirse " $+(x, y)$ " en su lugar. Tenga en cuenta también que " $+$ "sólo puede recibir tantas entradas como su aridad: así $+(x, y, z)$ no es un término, ya que $+$ es $2$ -ary. Ahora la asociatividad de una operación binaria $*$ se expresa como $$\forall x, y, z(*(x, *(y, z))=*(*(x, y), z)),$$ y la cuestión que planteas no surge aquí en absoluto, ya que los "términos ambiguos" pertinentes ni siquiera son expresiones bien formadas en nuestra sintaxis.
_Por cierto, ten en cuenta que la notación que he descrito anteriormente es redundante: podríamos escribir " $ft_1...t_n$ " y esto sería perfectamente inequívoco . Pero, en mi opinión, esto lleva a una pérdida significativa de "legibilidad humana"; ¿por qué hacer que tu sintaxis sea mínima si es más difícil de leer? Ya me arrancarás las comas y paréntesis innecesarios de mis frías y muertas manos._
Ahora bien, en cierto sentido esto puede considerarse como una evasión de la cuestión: ¿Y si queremos permitir las operaciones infijas? ? También en este caso, la cuestión es que tenemos que abordar las reglas de formación de términos con cuidado. Yo elegiría las siguientes reglas (aquí " $*$ " es un operador infijo binario):
- Si $t_1, t_2$ son términos, entonces $(t_1*t_2)$ es un término.
Obsérvese la adición de paréntesis: esto evita (¡de nuevo!) la formación de un "término ambiguo" como $x*y*z$ . Tiene el inconveniente de añadir "paréntesis innecesarios", por ejemplo, " $x*y$ " no es un término, sino " $(x*y)$ ", pero esto acaba no siendo un problema, sólo una molestia.
$^*$ En realidad, hay una tercera solución: ¡sólo permitir operaciones binarias infijas que sean asociativas! Así que un lenguaje consiste en algunos símbolos constantes, símbolos de función, símbolos de relación y operaciones binarias infijas; y una interpretación de un lenguaje tiene que interpretar cada símbolo de operación binaria infija como una función binaria asociativa en el dominio. Esto resuelve las dificultades aquí, ya que la asociatividad está incorporada en la elección de la notación, y significa que podemos permitir expresiones como " $a*b*c$ " sin causar ningún problema; sin embargo, me parece extremadamente artificial (y también va en contra de la práctica matemática: somos perfectamente felices escribiendo " $x-y$ " en el mundo real, después de todo), así que no lo consideraría más que una nota a pie de página.
2 votos
Es simplemente lógica de primer orden .
9 votos
Si utilizas la notación polaca, no necesitas paréntesis: ${+}{+}abc={+}a{+}bc$ . Con la notación infija, los paréntesis forman parte del lenguaje, por lo que no hay que "demostrar" nada sobre ellos.
0 votos
@egreg Interesante, entonces la adición se definiría como $+a0 = a$ con $+aS(b) =S(+ab)$ ? ¿Cómo sería el resto de la prueba para la asociatividad?
9 votos
++abSc = S++abc = S+a+bc = +aS+bc = +a+bSc y ahora ves por qué a la mayoría de la gente no le gusta usar la notación polaca
0 votos
Los paréntesis pueden eliminarse a costa de utilizar muchos nombres para los resultados intermedios y la escritura, por ejemplo, $S: a,b$ en lugar de $S(a)=b$ .
0 votos
El problema de eliminar los paréntesis es que entonces estamos probando $a+b+c=a+b+c$ que ya sabemos que es verdad por reflexividad.
1 votos
Permíteme intentar dar una descripción más explícita de la dificultad aquí, @usuario537069, y hazme saber si es correcta. Identificamos los términos " $(x*y)$ " y " $x*y$ " como norma, llámalo " $R$ " - esto no tiene nada que ver con el símbolo específico " $*$ " que se utiliza. Ahora bien, identificar estos términos significa que podemos sustituir el uno por el otro libremente. Pero esto nos permite demostrar que $*$ es asociativo, sin utilizar ningún axioma: tenemos $(x*y)*z=x*y*z$ a través de $R$ (eliminando el paréntesis), y $x*y*z=x*(y*z)$ de nuevo a través de $R$ (esta vez añadiendo paréntesis). (continuación)
1 votos
En cada aplicación de $R$ Todo lo que estamos haciendo es reemplazar un subtérmino de un término dado por un término igual. Dado que no todas las operaciones binarias son asociativas, algo está mal aquí, y tiene que ser algo sobre la forma en que se están utilizando los paréntesis; así que, ¿qué es? ¿Es esta una descripción precisa de lo que está preguntando?
0 votos
@NoahSchweber Entiendo cómo demostrar que algo es o no es asociativo, pero sólo después de haber tomado los paréntesis como un concepto garantizado. Mi pregunta tiene más que ver con cómo se tratan los paréntesis formalmente, de dónde vienen, si necesitamos pruebas, etc. Ya que no parece ser una sustitución en bruto. Por lo demás, probar $(a+b)+c = a+(b+c)$ sería lo mismo que "probar" $a+b+c=a+b+c$ que sabemos que es cierto por reflexividad, así que no es tan sencillo como definir $(a+b)=a+b$ en términos de sintaxis/notación/sustitución.
2 votos
La "lógica subyacente" define la sintaxis: $a$ es un término (un "nombre"), $b$ es un término; $+$ es un binario función y por lo tanto $+(a,b)$ (normalmente se escribe: $(a+b)$ ) es un término .
8 votos
Lo que tenemos que demostrar no es "el uso de paréntesis" sino el hecho de que $+(a,b)=+(b,a)$ . En general, no es cierto que $f(a,b)=f(b,a)$ para cada función binaria. Y lo mismo para $+(+(a,b),c)=+(a,+(b,c))$ .
0 votos
O si lo escribes en forma postfija tienes que demostrar que $ab+c+ = abc++$
0 votos
@MJD No olvides los infijos $=$ en su puesto.
0 votos
El $=$ Los signos son un metalenguaje, no un lenguaje de objetos.
0 votos
Los paréntesis son simplemente un conveniencia de la notación y realmente sólo indican qué agrupaciones (operadores) se evalúan primero. Por supuesto, todo de los símbolos y la puntuación son conveniencias notacionales, utilizadas para representar conceptos matemáticos abstractos de forma escrita.
0 votos
+1 Buen punto. No había pensado antes en esto. Véase mi respuesta.