Calculus of inductive constructions

Oriol

Que propiedades tiene el calculus of inductive constructions?

Claude

El Cálculo de Construcciones Inductivas (CIC), la teoría de tipos en la que se basan Coq/Rocq y, con variantes, Lean, tiene estas propiedades principales:

Propiedades metateóricas - Normalización fuerte: todo término bien tipado reduce a una forma normal en un número finito de pasos, y ninguna secuencia de reducción es infinita. Por eso todas las funciones definibles terminan. Es el motivo de que Coq exija recursión estructural o bien fundada. - Confluencia (Church-Rosser): el resultado de reducir no depende del orden en que se apliquen las reglas, así que la forma normal es única. - Preservación de tipos (subject reduction): si un término tiene tipo T, sigue teniéndolo después de reducirse. - Consistencia lógica: no existe ningún término cerrado de tipo False, por lo que no se puede demostrar una contradicción. Es consecuencia de la normalización. - Decidibilidad del chequeo de tipos: verificar si un término tiene un tipo dado es un problema decidible. Gracias a esto el ordenador puede comprobar las demostraciones de forma mecánica.

Propiedades estructurales - Tipos dependientes: un tipo puede depender de un valor, por ejemplo “vector de longitud n”. - Correspondencia de Curry-Howard: las proposiciones son tipos y las demostraciones son programas. - Tipos inductivos: permite definir naturales, listas, árboles y predicados, junto con sus principios de eliminación y recursión. - Jerarquía de universos: Prop es impredicativo y Type₀ : Type₁ : … es predicativo. La jerarquía evita paradojas como la de Girard. - Condición de positividad estricta: los constructores no pueden mencionar el tipo que se define a la izquierda de una flecha. Sin esta restricción se perdería la consistencia. - Lógica constructiva: el tercero excluido no es demostrable, aunque puede añadirse como axioma sin volver el sistema inconsistente. - Extracción de programas: a partir de una demostración se puede obtener código ejecutable, por ejemplo en OCaml o Haskell, borrando las partes de Prop.

Lo que no tiene de serie: extensionalidad de funciones, irrelevancia de pruebas obligatoria y univalencia. Todas pueden añadirse como axiomas.

¿Quieres que profundice en alguna, por ejemplo por qué la normalización implica la consistencia?

Oriol

Con que logica se corresponde?

Claude

Con la lógica intuicionista de orden superior: una lógica de predicados constructiva en la que se puede cuantificar sobre predicados, funciones y proposiciones, enriquecida con definiciones inductivas.

Por partes:

En el cubo lambda de Barendregt, el Cálculo de Construcciones sin inductivos ocupa el vértice superior (λC) y corresponde a la lógica de predicados intuicionista de orden superior. En la escala de lógicas, la lógica proposicional corresponde al λ-cálculo simplemente tipado, la de segundo orden al Sistema F y la de orden superior a Fω. Al añadir tipos dependientes se llega a la lógica de predicados correspondiente.

En fuerza, CIC es aproximadamente equiparable a una teoría de conjuntos de tipo ZF intuicionista con universos inaccesibles, mucho más fuerte que la aritmética de Peano. Si se le añaden el tercero excluido y el axioma de elección, se acerca mucho a las matemáticas clásicas habituales.

Oriol

Que quiere decir que es inpredicativo?

Claude

Que una proposición puede cuantificar sobre una colección que la contiene a ella misma.

Ejemplo en Coq:

∀ P : Prop, P → P

Esta expresión es a su vez una Prop. Al definirla se cuantifica sobre todas las proposiciones, incluida ella misma. Esa autorreferencia es justo lo que significa “impredicativo”: se define algo apelando a una totalidad a la que ese algo pertenece.

Lo contrario, predicativo: en Type, cuantificar sobre todos los tipos de un nivel te hace subir de nivel.

∀ A : Type₀, A → A   :   Type₁

El resultado vive en un universo superior, de modo que nunca se habla de una colección que te incluya. Esto es más seguro pero menos expresivo.

Por qué importa: - Ventaja: permite codificar dentro de Prop los conectivos y definiciones de forma muy cómoda. Por ejemplo, False := ∀ P, P y la igualdad de Leibniz x = y := ∀ P, P x → P y. - Riesgo: la impredicatividad sin control produce paradojas. La de Russell es un caso, y la de Girard muestra que Type : Type es inconsistente. Por eso CIC solo la permite en Prop y mantiene Type estratificado en niveles. - Precio: para no perder la consistencia, de una prueba en Prop no se puede extraer información para construir datos en Type. Esa es la restricción de eliminación que habrás visto en Coq.

Origen histórico: Poincaré y Russell criticaban las definiciones “círculo vicioso”, y la teoría de tipos ramificada de Russell nació para evitarlas. CIC llega a un compromiso: tolera la impredicatividad, pero solo en el mundo de las proposiciones.

Oriol

¿Cuáles son los axiomas de la lógica?

Claude

Buena pregunta, pero tengo que precisar algo antes: no hay un único conjunto de axiomas de “la lógica”. Depende de qué lógica y de qué presentación uses. Te doy los casos más habituales.

Lógica proposicional clásica (presentación de Hilbert), tres esquemas de axioma más una regla: - A → (B → A) - (A → (B → C)) → ((A → B) → (A → C)) - (¬B → ¬A) → (A → B) - Regla: modus ponens (de A y A→B se deduce B)

Con esos tres esquemas y modus ponens se demuestra todo lo demostrable en lógica proposicional clásica.

Lógica intuicionista: la misma, pero el tercer axioma se sustituye por uno más débil sobre la negación, por ejemplo A → (¬A → B) (de una contradicción se sigue cualquier cosa). Lo que se pierde es justamente ¬¬A → A y el tercero excluido A ∨ ¬A.

Lógica de predicados (primer orden): se añaden los esquemas para cuantificadores, como - (∀x. A) → A[t/x] (instanciación) - ∀x.(A → B) → (A → ∀x. B) cuando x no es libre en A - Regla de generalización.

Una presentación alternativa, la deducción natural, prescinde casi de axiomas y usa en su lugar reglas de introducción y eliminación para cada conectivo (∧, ∨, →, ¬, ∀, ∃). Es la que conecta de forma directa con Curry-Howard y con lo que hablábamos de CIC: esas reglas son los constructores y eliminadores de los tipos.

Un matiz importante: estos axiomas fijan las reglas de inferencia, no verdades sobre el mundo. Son puramente formales.

¿Te interesa alguna lógica concreta, o cómo estos sistemas se relacionan con la teoría de tipos que veníamos tratando?

Oriol

Después de que me cae de construcciones.

Claude

Perdona, no te acabo de captar la frase. ¿Me preguntas qué viene después del cálculo de construcciones, es decir, qué extensiones o sistemas lo suceden?

Si es eso, la línea de evolución es más o menos así:

¿Era por ahí la pregunta, o te referías a otra cosa con “después”?

Oriol

fondo con el cálculo de construcciones.

Claude

Ah, creo que ahora sí: me preguntas por el fondo, el núcleo o fundamento del cálculo de construcciones. Dime si voy bien encaminado.

El fondo del Cálculo de Construcciones es esta idea unificadora: todo es un término, y los tipos son también términos. No hay una separación entre el nivel de los datos, el de los tipos y el de las proposiciones; todos viven en el mismo lenguaje y se gobiernan con las mismas reglas.

Sobre eso se montan dos pilares:

Y debajo de todo está la correspondencia de Curry-Howard llevada al extremo: demostrar y programar son literalmente la misma actividad. Una proposición es un tipo, su demostración es un término de ese tipo, y comprobar la prueba es comprobar que el término tipa.

Dicho en una frase: el fondo del CoC es un lambda-cálculo con tipos dependientes e impredicativo en el que lógica y computación son la misma cosa.

¿Es eso lo que buscabas, o querías que bajara al detalle de las reglas de tipado?

Oriol

Curry Howard.

Claude

Vale, Curry-Howard. Te lo cuento de fondo.

La correspondencia de Curry-Howard es la observación de que la lógica y la computación son la misma estructura vista de dos maneras. Formalmente:

Oriol

Del cálculo de construcciones.

Claude

Entendido: Curry-Howard dentro del cálculo de construcciones en concreto. Ahí la correspondencia se lleva al extremo, porque lógica y programa no son dos cosas análogas sino literalmente la misma.

La traducción es esta:

Lo que aporta el cálculo de construcciones por…

Oriol

La lógica que axiomas tiene.

Claude

Vale, entonces conectando con Curry-Howard: la lógica del cálculo de construcciones casi no tiene axiomas, y eso es lo interesante.

En lugar de axiomas al estilo Hilbert, lo que tiene son reglas de tipado, que por Curry-Howard son exactamente las reglas de deducción natural. Es decir, los “axiomas” de esta lógica son los constructores y eliminadores de cada tipo:

Así que la respuesta corta: esta lógica no tiene esquemas de axioma propios, sino reglas. Lo único que de verdad hace falta postular aparte son los axiomas opcionales que el sistema no demuestra por sí mismo:

Esos sí son axiomas en sentido estricto, y los añades solo si quieres recuperar la matemática clásica. Sin ellos, el sistema ya es una lógica completa y consistente por sí misma.

¿Quieres que te enseñe cómo se ve, por ejemplo, la definición inductiva de la conjunción con sus reglas?

Oriol

Si he de forzar el multiplicador de la. Cpu en throttlestop para que la velocidad suba (sino se queda en 800 Mhz) es debido a un problema de hardware? Tengo un zbook 15u g2

Claude

No necesariamente es una avería de la CPU. En los HP, que la CPU se quede clavada a 800 MHz suele deberse a que algo le indica al procesador que frene, casi siempre la señal BD PROCHOT (throttling externo). Las causas típicas, por orden de probabilidad:

  1. Cargador no original, de menos vatios o con el pin central dañado. Los HP leen por ese pin el tipo de cargador. Si no lo reconocen, limitan la CPU, y el aviso de “cargador no compatible” en la BIOS es una pista clara. El 15u G2 necesita 45 W, mejor 65 W.
  2. Batería degradada o defectuosa. Es muy común en equipos de esta edad. Prueba sin batería y con el cargador conectado: si la velocidad sube, has encontrado la culpable.
  3. Sobrecalentamiento: pasta térmica seca o ventilador sucio. En este caso la velocidad baja cuando la temperatura sube, no desde el arranque.
  4. Plan de energía o BIOS: es menos probable si ThrottleStop lo corrige, pero conviene actualizar la BIOS.

Para diagnosticarlo, abre en ThrottleStop la ventana “Limits”: te dice qué está limitando la CPU. Si aparece PROCHOT EXT, el origen es el cargador o la batería. Mientras tanto, desmarcar “BD PROCHOT” en la pantalla principal suele resolverlo sin forzar el multiplicador. Hazlo vigilando las temperaturas, porque desactivas una protección.

Así que puede ser hardware, pero de un componente barato de sustituir (cargador o batería), no de la placa ni de la CPU.

Oriol

Software windows alarma temperatura

Claude

Las mejores opciones gratuitas:

Para tu caso, sobre todo si desactivas BD PROCHOT en ThrottleStop, te recomiendo HWiNFO, con una alerta en torno a 90–95 °C. La CPU de tu ZBook se protege sola cerca de 105 °C.