Subtipado y compatibilidad en tipos de sesion multipartita - Rojek Moriceau, Hernán Carlos (2017)
La necesidad de explotar el cómputo paralelo, concurrente y distribuido motivó el desarrollo de modelos que capturan los conceptos de comunicación y comportamiento concurrente. La naturaleza de estos es ortogonal a la del cómputo secuencial, y requiere abstracciones diferentes, pero aún así puede valerse de estrategias exitosas desarrolladas para los modelos secuenciales. Los tipos de datos son una de las técnicas más utilizadas en la computación secuencial para dar garantías de correctitud y confiabilidad a los programas. Los tipos comportamentales permiten capturar aspectos dinámicos de un programa, principalmente relacionados con las capacidades de comunicación e interacción. Entre ellos se destacan los tipos de sesión. Los primeros desarrollos de tipos de sesión operan a nivel de canal de comunicación, lo cual restringe la captura de propiedades globales como por ejemplo, la interdependencia de canales. Para superar estas limitaciones, se desarrollaron los Tipos de Sesión Multipartita. Entre los avances recientes sobre esta teoría se destaca un método para garantizar correctitud, mediante la caracterización de las especificaciones como una clase denominada compatibilidad multipartita generalizada (GMC). Esta noción impone fuertes restricciones a las características de las especificaciones a verificar, y como consecuencia descarta implementaciones correctas. En la presente Tesis de Licenciatura se explora la noción de subtipado aplicada a los Tipos de Sesión Multipartita, como mecanismo para flexibilizar la verificación de correctitud arriba mencionada. En particular, proponemos dos nociones de subtipado: por eliminación de escrituras y por agregado de lecturas. Mostramos que tales nociones preservan la correctitud de la comunicación del sistema. Es decir, es posible reemplazar una componente por otra que sea de un subtipo del tipo de la original. Presentamos además un enfoque en el cual utilizamos las nociones de subtipado propuesto para probar que un sistema es correcto. Dado un sistema que no satisface la propiedad GMC, se buscan supertipos de las componentes dadas tal que el sistema que considera a los supertipos satisfaga la propiedad GMC. Si tal sistema se encuentra, entonces se puede concluir que el sistema original, si bien no satisface GMC, es seguro. Para una de las nociones de subtipado (subtipado por eliminación de escrituras), presentamos una implementación del procedimiento propuesto en Haskell. Se ilustra además la utilización de la herramienta para probar la correctitud de algunos sistemas.