En teoría de tipos , una regla de tipado es una regla de inferencia que describe cómo un sistema de tipos asigna un tipo a una construcción sintáctica . [1] : 94 Estas reglas pueden ser aplicadas por el sistema de tipos para determinar si un programa está bien tipado y qué expresiones de tipo tienen. Un ejemplo prototípico del uso de reglas de tipado es la definición de inferencia de tipos en el cálculo lambda de tipado simple , que es el lenguaje interno de las categorías cerradas cartesianas . [2]
Las reglas de tipificación especifican la estructura de una relación de tipificación que relaciona los términos sintácticos con sus tipos. [1] : 92 Sintácticamente, la relación de tipificación se suele indicar con dos puntos, por ejemplo, indica que una expresión tiene tipo . Las reglas en sí mismas se suelen especificar utilizando la notación de deducción natural . [1] : 26 Por ejemplo, las siguientes reglas de tipificación especifican la relación de tipificación para un lenguaje simple de booleanos : [1] : 93
Cada regla establece que la conclusión que se encuentra debajo de la línea puede derivarse de las premisas que se encuentran sobre la línea. Las dos primeras reglas no tienen premisas que se encuentren sobre la línea, por lo que son axiomas . La tercera regla tiene premisas que se encuentran sobre la línea (específicamente, tres premisas), por lo que es una regla de inferencia .
En los lenguajes de programación, el tipo de una variable depende de dónde está enlazada , lo que requiere reglas de tipado sensibles al contexto. Estas reglas se dan mediante un juicio de tipado , generalmente escrito como , que establece que una expresión tiene tipo bajo un contexto de tipado que relaciona las variables con sus tipos. Los contextos de tipado se complementan ocasionalmente con los tipos de variables individuales; por ejemplo, puede leerse como "el contexto complementado con la información de que la expresión tiene tipo produce el juicio de que la expresión tiene tipo ". Esta notación se puede utilizar para dar reglas de tipado para referencias de variables y abstracción lambda en el cálculo lambda de tipado simple : [1] : 101–102
De manera similar, la siguiente regla de tipificación describe la construcción del aprendizaje automático estándar :
No todos los sistemas de reglas de tipificación especifican directamente un algoritmo de verificación de tipos . Por ejemplo, la regla de tipificación para aplicar una función paramétricamente polimórfica en el sistema de tipos Hindley-Milner requiere "adivinar" el tipo apropiado en el que se debe instanciar la función. [3] Adaptar un sistema de reglas declarativas a un algoritmo decidible requiere la producción de un sistema algorítmico separado que pueda demostrarse que especifica la misma relación de tipificación. [4]