Coinducción - Coinduction

En ciencias de la computación , la coinducción es una técnica para definir y probar propiedades de sistemas de objetos que interactúan concurrentes .

La coinducción es el dual matemático de la inducción estructural . Los tipos definidos de forma coinductiva se conocen como codatos y suelen ser estructuras de datos infinitas , como flujos .

Como definición o especificación , la coinducción describe cómo un objeto puede ser "observado", "descompuesto" o "destruido" en objetos más simples. Como técnica de prueba , se puede utilizar para mostrar que todas las posibles implementaciones de dicha especificación satisfacen una ecuación .

Para generar y manipular codatos, normalmente se utilizan funciones corecursivas , junto con la evaluación perezosa . De manera informal, en lugar de definir una función haciendo coincidir patrones en cada uno de los constructores inductivos, se define cada uno de los "destructores" u "observadores" sobre el resultado de la función.

En programación, la programación co-lógica (co-LP para abreviar) "es una generalización natural de la programación lógica y la programación lógica coinductiva, que a su vez generaliza otras extensiones de la programación lógica, como árboles infinitos, predicados perezosos y predicados comunicantes concurrentes. Co-LP tiene aplicaciones para árboles racionales, verificación de propiedades infinitarias, evaluación diferida, programación lógica concurrente, verificación de modelos, pruebas de bisimilitud , etc. " Las implementaciones experimentales de co-LP están disponibles en la Universidad de Texas en Dallas y en Logtalk (para ver ejemplos, consulte) y SWI-Prolog .

Ver también

Referencias

Otras lecturas

Libros de texto
  • Davide Sangiorgi (2012). Introducción a la bisimulación y la coinducción . Prensa de la Universidad de Cambridge.
  • Davide Sangiorgi y Jan Rutten (2011). Temas avanzados en Bisimulación y Coinducción . Prensa de la Universidad de Cambridge.
Textos introductorios
Historia
Diverso