No, no se pueden distinguir estrictamente los métodos sintácticos de los semánticos, pero la distinción aún tiene sentido.
La semántica operacional estructural no es denotacional, porque no es un método compositivo para dar semántica a un lenguaje de programación.
Sin embargo, puede construir modelos denotacionales a partir de una semántica operacional estructural mediante el uso de un método de realización o de relaciones lógicas. Como ejemplo, vea Sistemas de construcción de tipos de Robert Harper sobre semántica operacional .
Los modelos de término son denotacionales, pero generalmente los semánticos no están satisfechos con ellos. Lo que generalmente quieren es una categoría de modelos en los que el término modelo sea inicial, que se puede usar para probar resultados de solidez y exhaustividad. (La solidez y la integridad del cálculo tipificado de lambda para las categorías cerradas cartesianas es el ejemplo paradigmático; consulte los Resultados de integridad categóricos deλ Alex Simpson para el cálculo simplemente- tipificado para algunos detalles).
En la otra dirección, si tiene una semántica denotacional, es posible que desee averiguar cuál es su sintaxis. Luego, debe buscar una máquina de sintaxis y abstracta cuyo término modelo pueda servir como un objeto inicial en una categoría adecuada de modelos.
Por ejemplo, la semántica del juego comenzó su vida como una construcción puramente semántica, y eventualmente condujo a trabajar en la semántica del juego operacional, un ejemplo reciente es El cálculo lambda lambda-bar de Alexis Goyet : Un cálculo dual para estrategias sin restricciones .
En general, puede pensar en la semántica operacional estructural como una forma de especificar máquinas abstractas, que esperamos sean fáciles de implementar. Una semántica denotacional proporciona un modelo compositivo de un lenguaje, sobre el cual esperamos que sea fácil razonar. Si tenemos ambos, entonces podemos implementar y razonar sobre el lenguaje.
Los teoremas de normalización son un caso ambiguo interesante. Por lo general, para demostrar la normalización, necesita un modelo semántico (generalmente una relación lógica). Sin embargo, una vez que sabe que la normalización es válida, muchas propiedades ahora se pueden probar mediante la inducción en formas normales, que es un argumento puramente sintáctico.
Para lógicas débiles (cualquier cosa hasta lógica de primer orden sin inducción, aproximadamente), puede probar la normalización sintácticamente, utilizando la técnica de sustitución hereditaria . En estas lógicas, se mantiene la propiedad de subformula, por lo que puede probar la normalización por inducción en tipos. Consulte el artículo de Frank Pfenning, Eliminación del corte estructural, para obtener una explicación de cómo funciona.