Semántica formal

De testwiki
Ir a la navegación Ir a la búsqueda

La semántica formal es el estudio de las interpretaciones de los lenguajes formales.[1] Los lenguajes formales pueden definirse sin necesidad de dar ningún significado a sus expresiones.[1] Una interpretación de un lenguaje formal es básicamente una asignación de significados a sus símbolos, y de condiciones de verdad a sus fórmulas bien formadas.[1]

Un objetivo importante de la construcción de una semántica formal para un lenguaje formal es la caracterización de la relación de consecuencia lógica en términos semánticos, y la demostración de metateoremas a partir de esa caracterización.[1] Una vez definido lo que es una interpretación para un lenguaje formal, se dice que una fórmula A es una consecuencia semántica de un conjunto de fórmulas Γ, si y sólo si para toda interpretación que hace verdaderas a las fórmulas en Γ, A también es verdadera.[1]

Semántica denotacional

En ciencias de la computación la semántica denotacional (inicialmente como semántica matemática o semántica Scott-Strachey) es una aproximación de la formalización de lenguajes de programación por construcciones de objetos matemáticos (denotaciones) que describe el significado de expresiones del lenguaje.

Dar una semántica denotacional para un lenguaje consiste en definir funciones de valoración semántica que asignan a cada elemento del lenguaje un objeto matemático (como un conjunto) que modele su significado.

Los pioneros en la aproximación de la semántica denotacional fueron Christopher Strachey y Dana Scott, quienes publicaron originalmente su trabajo a principios de la década de 1970.

Una expresión aritmética[2] a𝐀𝐞𝐱𝐩 se denotará por 𝒜[[a]]:Σ𝐍, donde 𝐀𝐞𝐱𝐩 está determinada por la sintaxis

a::=n|X|a0+a1|a0a1|a0×a1

y Σ es el conjunto de los estados por la cual está identificado cada elemento. Los brackets [[]] son tradicionales en la notación de semántica denotacional. En realidad 𝒜 es una función de expresiones aritméticas de tipo 𝐀𝐞𝐱𝐩(Σ𝐍). Por ejemplo, podríamos escribir 𝒜(3+5)σ=8 en lugar de 𝒜[[3+5]]σ=8. De forma más sutil, cuando se escriban denotaciones como 𝒜[[a0+a1]] donde a0,a1 son metavariables, los interpretaremos como objetos del lenguaje, y la suma es el objeto sintáctico obtenido al reemplazar el símbolo "+" entre los objetos sintácticos a0 y a1.

Esta idea puede extenderse para expresiones booleanas y comandos. Si denotamos a 𝐍={1,2,} al conjunto de los números naturales y 𝐓={true,false} al conjunto de valores de verdad, definimos las funciones semánticas 𝒜:Aexp(Σ𝐍),:Bexp(Σ𝐍),𝒞:𝐂𝐨𝐦(ΣΣ)por inducción estructural.

Véase también

Notas y referencias

Plantilla:Listaref

Plantilla:Control de autoridades