Articulo de referencia

Teorías unificadoras de la programación

[[He Jifeng]]"},"audio_read_by":{"wt":""},"title_orig":{"wt":""},"orig_lang_code":{"wt":""},"title_working":{"wt":""},"translator":{"wt":""},"illustrator":{"wt":""},"cover_artis...

Las Teorías Unificadoras de la Programación ( UTP , por sus siglas en inglés) en informática abordan la semántica de los programas . Muestran cómo la semántica denotacional , la semántica operacional y la semántica algebraica pueden combinarse en un marco unificado para la especificación formal , el diseño y la implementación de programas y sistemas informáticos .

El libro con este título de CAR Hoare y He Jifeng [ 1 ] fue publicado en la Prentice Hall International Series in Computer Science en 1998 y se ha puesto a disposición gratuitamente en la web. [ 2 ]

En 2006 se inició una serie de simposios de la UTP. [ 3 ]

Teorías

El fundamento semántico de la UTP es el cálculo de predicados de primer orden , aumentado con construcciones de punto fijo de la lógica de segundo orden. Siguiendo la tradición de Eric Hehner , los programas son predicados en la UTP, y no existe distinción entre programas y especificaciones a nivel semántico. En palabras de Hoare :

Un programa informático se identifica con el predicado más fuerte que describe cada observación relevante que se puede hacer del comportamiento de una computadora que ejecuta ese programa. [ 4 ]

En la jerga de UTP, una teoría es un modelo de un paradigma de programación particular. Una teoría UTP se compone de tres ingredientes:

  • un alfabeto , que es un conjunto de nombres de variables que denotan los atributos del paradigma que pueden ser observados por una entidad externa;
  • una firma , que es el conjunto de construcciones del lenguaje de programación intrínsecas al paradigma; y
  • una colección de condiciones de salud , que definen el espacio de programas que se ajustan al paradigma. Estas condiciones de salud se expresan típicamente como transformadores de predicados idempotentes monótonos .

El perfeccionamiento del programa es un concepto importante en la UTP. Un programaPAG1{\displaystyle P_{1}}es refinado porPAG2{\displaystyle P_{2}}si y solo si cada observación que se pueda hacer dePAG2{\displaystyle P_{2}}es también una observación dePAG1{\displaystyle P_{1}}La definición de refinamiento es común en todas las teorías UTP:

PAG1PAG2si y solo si[PAG2PAG1]{\displaystyle P_{1}\sqsubseteq P_{2}\quad {\text{si y solo si}}\quad \left[P_{2}\Rightarrow P_{1}\right]}

dónde[incógnita]{\displaystyle \left[X\right]}denota [ 5 ] el cierre universal de todas las variables en el alfabeto.

Relaciones

La teoría UTP más básica es el cálculo de predicados alfabetizados, que no tiene restricciones de alfabeto ni condiciones de salud. La teoría de relaciones es un poco más especializada, ya que el alfabeto de una relación puede constar únicamente de:

  • variables sin decorar (v{\displaystyle v}), modelando una observación del programa al inicio de su ejecución; y
  • variables preparadas (v{\displaystyle v'}), modelando una observación del programa en una etapa posterior de su ejecución.

En la teoría de las relaciones, algunas construcciones lingüísticas comunes pueden definirse de la siguiente manera:

  • La instrucción skip, que no altera el estado del programa de ninguna manera, se modela como la identidad relacional:

skipagv=v{\displaystyle \mathbf {skip} \equiv v'=v}

  • La asignación de valormi{\displaystyle E}a una variablea{\displaystyle a}se modela como configuracióna{\displaystyle a'}ami{\displaystyle E}y manteniendo todas las demás variables (denotadas por{\displaystyle u}) constante:

a:=mia=mi={\displaystyle a:=E\equiv a'=E\land u'=u}

PAG1;PAG2v0PAG1[v0/v]PAG2[v0/v]{\displaystyle P_{1};P_{2}\equiv \exists v_{0}\bullet P_{1}[v_{0}/v']\land P_{2}[v_{0}/v]}

  • La elección no determinista entre programas es su mayor límite inferior:

PAG1PAG2PAG1PAG2{\displaystyle P_{1}\sqcap P_{2}\equiv P_{1}\lor P_{2}}

PAG1doPAG2(doPAG1)(¬doPAG2){\displaystyle P_{1}\triangleleft C\triangleright P_{2}\equiv (C\land P_{1})\lor (\lnot C\land P_{2})}

  • Una semántica para la recursión viene dada por el punto fijo mínimo.μF{\displaystyle \mu \mathbf {F} }de un transformador de predicados monótonoF{\displaystyle \mathbf {F} }:

μincógnitaF(incógnita){incógnitaF(incógnita)incógnita}{\displaystyle \mu X\bullet \mathbf {F} (X)\equiv \sqcap \left\{X\mid \mathbf {F} (X)\sqsubseteq X\right\}}

Referencias

  1. Woodcock, Jim (octubre de 2021). "Hoare y sus teorías unificadoras de la programación". En Jones, Cliff B .; Misra, Jayadev (eds.). Teorías de la programación: la vida y obra de Tony Hoare . Association for Computing Machinery . págs. 285–316 . doi : 10.1145/3477355.3477369 . 
  2. Hoare, CAR ; Jifeng, He (1 de abril de 1998). Unifying Theories of Programming . Prentice Hall. pág. 320. ISBN  978-0-13-458761-5Archivado del original el 7 de octubre de 2016. Consultado el 7 de octubre de 2016 .{{cite book}}: CS1 maint: bot: estado de la URL original desconocido ( enlace )
  3. Dunne, Steve; Stoddart, Bill, eds. (2006). Unifying Theories of Programming: First International Symposium, UTP 2006, Walworth Castle, County Durham, Reino Unido, 5–7 de febrero de 2006 (PDF) . Lecture Notes in Computer Science . Springer . doi : 10.1007/11768173 .
  4. Hoare, CAR (abril de 1984). "Programación: ¿hechicería o ciencia?". IEEE Software . 1 (2): 5– 16. doi : 10.1109/MS.1984.234042 . S2CID 375578 . 
  5. Dijkstra, Edsger W. ; Scholten, Carel S. (1990). Cálculo de predicados y semántica de programas . Textos y monografías en informática. Springer. ISBN 0-387-96957-8.

Lecturas adicionales

  • Woodcock, Jim ; Cavalcanti, Ana (2004). «Introducción tutorial a los diseños en Teorías Unificadoras de la Programación» (PDF) . Métodos Formales Integrados . Notas de Clase en Ciencias de la Computación , páginas. Vol.  2999. Springer. pp. 40–66 . doi : 10.1007/978-3-540-24756-2_4 . ISBN  978-3-540-21377-2.
  • Cavalcanti, Ana; Woodcock, Jim (2006). «Una introducción tutorial a CSP en Unifying Theories of Programming» (PDF) . Refinement Techniques in Software Engineering . Lecture Notes in Computer Science. Vol.  3167. Springer. pp. 220–268 . doi : 10.1007/11889229_6 . ISBN  978-3-540-46253-8.