¿Cómo podemos estar seguros de que las matemáticas son ‘libres de errores’? / ¿Cómo podemos estar realmente seguros de que todas las pruebas principales son correctas?

En pocas palabras, no podemos estar seguros, en un sentido filosófico, de que todas las pruebas son correctas en matemáticas. Sin embargo, hay muchas diferencias entre las pruebas y funciones matemáticas en los lenguajes de programación. Comprender cómo funciona una función en un lenguaje de programación puede requerir comprender algoritmos complejos y arquitectura de computadora. Las pruebas matemáticas, por otro lado, se pueden dividir en partes tan pequeñas como se desee, hasta los axiomas, y no necesariamente deben entenderse para demostrar su exactitud. Por lo general, es más fácil dar el visto bueno a una prueba matemática. Incluso se está trabajando para que las computadoras puedan hacer esto. Por supuesto, esto no significa necesariamente que una prueba matemática sea correcta, incluso si es aceptada por otros matemáticos.

La segunda diferencia que me gustaría señalar es que la afirmación matemática puede ser correcta incluso si la prueba no lo es. Hay ejemplos históricos (el cálculo vectorial viene a la mente) donde las identidades muy útiles se “demostraron” erróneamente y se usaron con éxito antes de que se probaran correctamente. A diferencia de los programas informáticos, los errores no se propagan necesariamente. Por supuesto, una declaración falsa con una “prueba” incorrecta aún puede propagarse, como usted dijo.

Su comparación con los casos de esquina también es interesante. Si una función de lenguaje de programación falla en ciertos casos de esquina, se considera defectuosa. En matemáticas, la mayoría, si no todos, los teoremas se aplican solo según ciertos criterios subyacentes. También, como lo pones, fallan en los casos de esquina, o más correctamente, ya no son válidos. Esto no es realmente un problema en matemáticas. Todavía puedes construir teorías útiles.

Supongo que esencialmente tenemos fe en nuestro propio juicio y corregiremos errores si encontramos alguno, como en cualquier esfuerzo humano. Supongo que la mayoría cree que los humanos pueden cometer errores, pero realmente hay algo de verdad matemática subyacente que puede lograrse, y muy probablemente se haya logrado en casi todos los casos.

¿Es esta respuesta satisfactoria? Bueno, desafortunadamente hay más capas para tu pregunta. Usted preguntó cómo sabemos que todas las pruebas son correctas y que los errores no se propagan. Esa es solo la capa más superficial y más externa.

En los lenguajes de programación creas funciones y clases para ciertas tareas. Si todo funciona como debería para cada escenario posible, no hay problema. Sin embargo, las matemáticas son diferentes. En matemáticas tienes axiomas. Estos axiomas, si son lo suficientemente complejos, implican esencialmente una infinidad de hechos matemáticos. ¿Cómo sabemos que todos estos son correctos? ¿Cómo sabemos que nuestros axiomas no conducen a contradicciones en algún lugar del camino?

Me temo que no puedo dar una respuesta satisfactoria aquí. Permítanme darles un poco más de lectura. Se ha demostrado, en matemáticas, que las matemáticas no pueden probar que sea consistente. Vea por ejemplo 🙁 http://en.wikipedia.org/wiki/G%C…). También encontré esta página que discute la posibilidad de inconsistencias globales en matemáticas: (http://www.mathpages.com/home/km…).

La programación no es matemática. No estamos hablando de algo que funcione de manera condicional, sino de algo que se evalúa basándose únicamente en pruebas lógicas y la coherencia del argumento.

Estoy seguro de que puede haber mejores respuestas que las mías, pero funciona bastante bien, dada la cantidad de problemas que han existido durante largos períodos de tiempo sin soluciones (y muchas de las cuales aún existen).

No es absolutamente nada como la programación.

Tenga en cuenta también que la mayoría de la programación es descuidada y apresurada. No se acerca al rigor involucrado en una prueba de matemáticas. Incluso su ejemplo de un error de programa con respecto a la entrada se basa en una mala programación. Si un programa no puede manejar una condición, debe tener una forma mínima de detectar la excepción y tratarla como una excepción. El no hacerlo es una mala codificación.