Por favor revise mi cálculo ficticio (problema de detención, incompleto)

Para una historia, estoy haciendo que un personaje invente un nuevo tipo de cálculo.

Problema de detención

Las nuevas matemáticas resuelven eficientemente el problema de la detención.

¿Qué es el problema de la detención?

Siempre que tenga un código como este:

x = entrada(); while (x <> 0) { x = entrada(); }

¿Cuántos ciclos tardará este código en dejar de ejecutarse? La respuesta que es obvia para un humano es que esto se ejecutará hasta que la entrada del usuario sea = 0

Y eso es lo que el nuevo cálculo ficticio proporcionará como respuesta: que esto se ejecutará hasta que x sea cero.

La paradoja del barbero

El nuevo partido también resuelve de manera eficiente la paradoja del peluquero.

¿Qué es la paradoja del peluquero?

Una ley exige que todos los hombres del pueblo se afeiten (A). Todos los hombres que no se afeiten (B) deberán ser afeitados por el barbero del pueblo. ¿Quién afeita al barbero del pueblo?

Al igual que el problema de la detención, la respuesta es obvia para las personas, pero difícil de codificar matemáticamente, que es lo que hace este cálculo ficticio. O bien la suposición de que el peluquero del pueblo es miembro del grupo A es errónea (quizás el peluquero sea una mujer, quizás la ley tenga una excepción para el peluquero del pueblo), o la regla propuesta para el grupo B está incompleta. Se requiere más información para responder a la pregunta, y esa es la respuesta en este cálculo ficticio.

Caso de uso

Esta matemática está destinada a simplificarse hasta el punto en que los resultados anteriores son tan simples como límite X 0 pecado X X = 1 . Las personas pueden resolver problemas extremadamente complicados en una hoja de papel, al igual que el cálculo real permitió a las personas observar sistemas dinámicos de todo tipo. El formalismo exacto no importa.

El caso de uso es que los personajes podrán evaluar rápidamente las condiciones de ingeniería en entornos extremos (como Venus, por ejemplo). Con un conjunto de nuestras relaciones supuestas y los resultados reales de las pruebas, el matemático identifica dónde está incompleta una relación supuesta y, o bien, identifica con precisión cuál es la suposición errónea (el peluquero es una mujer; x será igual a 0 en 30 segundos), una variable que sustituye a la parte incompleta, o al menos que la parte incompleta existe. Con suerte, reemplazará muy rápidamente el ensayo y error de años de revolver rocas y probar cosas con unas pocas semanas de cosas que se pueden hacer con una sonda.

La pregunta

Entonces, mi pregunta es esta: ¿tiene sentido? ¿Tiene sentido el caso de uso? Lo más importante: ¿es este un tipo de matemática que ya existe, y yo no sabía nada al respecto? Veo que hay similitudes con el ejemplo del problema de detención y la notación Big O , específicamente.

Creo que has entendido mal el problema de la detención. Para empezar, sólo establece que no se pueden decidir algunos programas, ni todos ni la mayoría. (Y hablando con propiedad, no incluye programas que toman la entrada del usuario; solo comenta sobre el programa en sí y el estado de la memoria de la computadora que lo ejecuta, no sobre nada que un usuario pueda o no pueda hacer. Un usuario impaciente con Ctrl- C puede garantizar que cualquier programa se "detenga" en 10 segundos, pero esto, lamentablemente, no cuenta).
¿Sabe que se ha demostrado que no existe un algoritmo o ecuación que pueda decir para cualquier programa si se detendrá o no?
La lógica de la computadora se basa en un programa/subrutina para decidir que la salida es verdadera o falsa, el problema de detención destaca una falla de que cierto programa/subrutina puede ser contradictorio en sí mismo y la salida es indecisa (irresoluble). Así que ahí lo tienes, no es un problema de matemáticas, aunque tuviste que usar las matemáticas para hacer el argumento... Mira lo que acabo de hacer allí; D
¿Qué significa "x <> 0"?
@Daron "<>" es un operador sql que significa "no es igual". También podría ser eso en otros idiomas, pero definitivamente es eso en SQL.
Por favor revise mi cálculo ficticio. . . de la que no te diré nada.
@alexp - eso es decepcionante. La pregunta se siente bien enmarcada.
@alexp: para que sepa mejor la próxima vez, ¿qué tipo de descripción estaba buscando?
@daron no es igual a.
No sé, es un cálculo nuevo ... Por ejemplo, toma tu primer problema, al que erróneamente llamas el problema de la "detención" (no es el problema de la detención, es una aplicación directa del razonamiento sobre programas); tenemos, de verdad, marcos matemáticos para razonar sobre programas : ¿qué hace el nuevo cálculo que no hacen los marcos existentes? El segundo problema se representa muy fácilmente en la lógica de predicados de primer orden; ¿Qué hace el nuevo cálculo que no hace la simple lógica ordinaria de predicados de primer orden?
su "nuevo cálculo" es básicamente magia matemática, en conflicto con declaraciones ya probadas. (también: con la redacción precisa utilizada, su paradoja de barbero técnicamente no es una paradoja)

Respuestas (2)

No podemos verificar su cálculo ficticio porque no nos lo proporcionó. Sin embargo, podemos mirar sus descripciones.

El ejemplo del problema de detención da una buena idea de lo que buscas. No hay solución al problema de la detención tal como lo definen los matemáticos. El lenguaje utilizado para describir el problema de la detención incluye formalmente las limitaciones del lenguaje utilizado para actuar sobre él.

Del mismo modo, el afeitado del barbero tiene un conjunto bien entendido de traducciones a la teoría de conjuntos, y esas definiciones formales no ofrecen oportunidades para liberarse con una nueva forma de cálculo. Así como nunca encontraremos un cálculo que demuestre 2 + 1 = 1, nunca encontraremos un cálculo que resuelva las cuestiones que surgen en la descripción del lenguaje formal de estos problemas.

Por supuesto, sigo lanzando esta frase, "lenguaje formal". Nos ha dado una glosa en inglés de varios problemas que ponen los pelos de punta a los matemáticos. Pero la versión en inglés no es tan mala. Usted mismo señala las lagunas que podrían resolver el problema del peluquero.

Con ese fin, me gustaría señalar el hermano mayor del problema de la detención: el teorema de Rice . Le invitamos a seguir el enlace para leer la versión en lenguaje formal del teorema, pero la glosa en inglés será suficiente aquí. El teorema de Rice establece que todas las propiedades semánticas no triviales de cualquier algoritmo son indecidibles. En este sentido, "semántico" significa que se refiere a lo que hace el algoritmo, a diferencia de las propiedades "sintácticas" que simplemente se refieren al contenido del algoritmo (como "¿tiene una rama si-entonces?"). Y no trivial solo significa que la propiedad es verdadera para algunos algoritmos y falsa para otros. Es trivial demostrar que un algoritmo "o se detiene o no se detiene", porque todos los programas hacen eso.

Llamo al teorema de Rice el "hermano mayor" del problema de la detención porque el problema de la detención es solo una instancia específica. Si su propiedad es "¿termina el programa?", el teorema de Rice se convierte en el problema de detención. Pero el teorema de Rice apunta al punto clave en el que parece estar trabajando su cálculo: la semántica. Su cálculo necesita operar sobre el significado semántico de estas frases, no solo sobre su sintaxis. Por ejemplo, el problema con el peluquero no es un problema en la semántica porque las lagunas son bastante explícitas.

¿Qué tan explícito? Bueno, usted habló de querer saber si había un caluclus existente para esto. Hay. Hay varios, porque la semántica es un gran problema. Ahora ninguno de ellos pretende ser "completo", pero todos tienen su lugar. La mayoría de los cálculos que se me ocurren son las lógicas de descripción (DL). Estas son herramientas semánticas que están diseñadas para permitir enfoques del estilo de "girar la manivela" para llegar a las respuestas. Por ejemplo, el problema del peluquero se puede representar en un lenguaje, OWL *:

# The class of men is a subset of the class of shaved things
SubClassOf(Man Shaved) 

# Everyone who is shaved is shaved by the barber.
EquivalentClasses(Shaved ObjectHasValue(shavedBy theBarber)) 

# Nobody shaves themselves
IrreflexiveObjectProperty(shavedBy)

# the person we seek is the person who shaves the barber
ObjectPropertyAssertion(shavedBy theBarber thePersonWeSeek)

Dentro de este constructo, podemos preguntar "¿es esto satisfactorio?" ¿Es teóricamente posible asignar valores a thePersonWeSeektal que se cumplan todos los criterios? Y la respuesta es sí. Por las reglas de inferencia de OWL, podemos determinar que este sistema funciona. Ahora, por supuesto, una forma es considerar que la clase "Hombre" tiene 0 elementos -- ¡no hay hombres en la ciudad! Para arreglar eso,

# Assert that there is at least one person (someone) who is a man
ClassAssertion(Man someone)

Ahora, con esa escapatoria cerrada, encontramos que sí, todavía es satisfacible. Incluso podemos hacer afirmaciones sobre el barbero, como ClassAssertion(ObjectComplement(Man) theBarber), que es la escapatoria que mencionaste: el barbero no es un hombre (el barbero es un miembro del complemento de la clase "Hombre").

Esto resuelve su caso de uso bastante limpio. Dependiendo de cómo traduzca las frases en inglés a OWL, encontrará diferentes lagunas, o incluso puede encontrar que cerró la laguna y todo el sistema se considera "insatisfactorio". Por ejemplo, si agrega reglas de que un barbero es un humano y que todos los humanos son hombres o mujeres, podría deducir que el barbero es una mujer.

Del mismo modo, DL también respalda su objetivo de eludir el problema de la detención. Si puede describir un programa semánticamente, a veces puede manipularlo para llegar a la respuesta que busca. Esto es lo que hacen los compiladores de optimización. Encuentran una manera de describir su programa que les permite hacer declaraciones útiles.

Ahora DL no es absolutamente una panacea. No reescribe las matemáticas. Los DL se diseñaron cuidadosamente para ser herramientas semánticas bastante poderosas, pero para ser siempre decidibles . Si activa cualquier consulta de coherencia que pueda realizar en un sistema DL, siempre puede encontrar una respuesta. No hay indecidibilidad aquí. ¿Cómo lo hicieron? Bueno, están intencionalmente debilitados para eludir el tipo de problemas aquí. En realidad, no pueden describir las máquinas de Turing lo suficiente como para armar la frase "¿esta máquina de Turing se detiene?" Lo hacen evitando contar (entre otras pequeñas y brillantes elecciones). No se puede hacer inducción matemática en ellos, porque no tienen forma de anotar n+1de una manera que permita probar nada.

Pero sí creo que son lo más cercano a un "cálculo" para responder a su tipo de preguntas que he encontrado. También son bestias fascinantes. Mirando hacia arriba desde este cálculo fácil y agradable hacia el mundo más amplio de la semántica, está la teoría de modelos , donde decimos "dado este conjunto de declaraciones verdaderas en nuestro modelo, ¿qué otras declaraciones verdaderas podemos hacer?" La regla de la Lógica de Descripción sigue de cerca los conceptos de vinculación de la Teoría de Modelos, simplemente operan en un lenguaje particular que tiene buenas propiedades. Puedes hacer Model Theory con las frases en inglés, sin traducirlo a OWL. Simplemente es más difícil llegar a algún lado cuando tus oraciones están en un lenguaje natural. Teoría de categoríaspuede ayudar con eso. Hay quienes investigan la teoría de categorías que afirman que es la base fundamental del lenguaje: todas las frases del lenguaje natural pueden transformarse en el lenguaje de las categorías. ¡Una afirmación de enormes proporciones en verdad!

Entonces, leyendo mucho entre líneas, su caluclus es probablemente un cálculo de semántica. Y, debido a que busca hacer que algunas pruebas sean fáciles, probablemente tenga un núcleo fácil de algo como DL que es decidible. Pero, si desea mantenerlo ficticio, debe saltar de este núcleo de DL decidible a algo más mágico. Algo así como la psicohistoria , un cálculo estadístico ficticio que utilizó Asimov para construir un personaje que predijo el curso de toda la humanidad durante miles de años.


* Uso OWL, en lugar del idioma nativo de DL, porque es un poco más accesible. DL está lleno de simbología concisa y exigente. Podría verse como:

METRO S
pag , q ( pag , q ) : s ( q = b )
pag , q ( pag , q ) : s ( pag q )
( b , X ) : s

Si bien esta es una notación muy bien definida, creo que es más difícil de leer con todos los símbolos. Las palabras usadas en OWL parecen ayudar. Si está interesado en la conexión, el dialecto de OWL que estoy usando, OWL-DL es un S H O I norte ( D ) lenguaje, donde ese lío de mayúsculas matemáticas describe un tipo particular de Lógica de Descripción. Resulta ser uno que ha recibido mucha atención gracias al éxito de OWL.

Esto es extremadamente útil. Gracias.

Ya que ha etiquetado esto como ciencia dura: No, no tiene sentido. Hay pruebas para el problema de la detención. Tampoco es una prueba tan difícil de seguir si no recuerdo mal.

Si está tratando de establecer una ciencia dura, todo es lo mismo, pero esta cosa es diferente. Eso es genial, pero solo agita los detalles a mano. Pantalla de lámpara sin tecnoparloteo, continúa con la historia. Solo asegúrese de que los lectores comprendan los límites de la herramienta; de lo contrario, podría encontrarse con el problema de "lo hizo un mago".

Si debe tener alguna tecnocharla plausible, sería mejor que dijera algo como "tiene pruebas de que np==p". (De lo cual actualmente no tenemos pruebas). Lo que disminuiría el tiempo de resolución de muchos problemas difíciles. Que parece ser lo que buscas.

Mejor aún, solo diga que sus protagonistas tienen mejores computadoras con algunos asistentes de IA fuertes. Afecto más plausible y similar. No insinúa romper teoremas probados.

Estoy de acuerdo. Los primeros dos ejemplos suenan como galimatías y el caso de uso es demasiado vago para responder si este tipo de matemáticas ya existe o no.
La prueba del problema de detención (informalmente) es así: si tiene un algoritmo que resuelve el problema de detención, puede crear un algoritmo que entre en un ciclo infinito si la entrada dada se detiene y se detiene si la entrada dada no se detiene. Luego lo das como entrada y tienes una paradoja. Si se detiene, no se detiene y si no se detiene, se detiene.