Tipos de propiedad y lógica de separación


10

Los tipos de propiedad y la lógica de separación parecen tener objetivos similares, control sobre la propiedad y alias. Quizás, también debería agregar: la capacidad de escribir especificaciones modulares.

¿Qué se sabe sobre la relación entre los tipos de propiedad y la lógica de separación?


Suena vagamente familiar.
Dave Clarke

@DaveClarke: ¿Mi respuesta tiene sentido para ti? Has trabajado mucho en la propiedad, y solo lo hice un poco antes de pasar a trabajar en la lógica de separación.
Neel Krishnaswami

@NeelKrishnaswami: Tu respuesta tiene mucho sentido. Planeo llenar algunos vacíos cuando pueda encontrar tiempo. En cualquier caso, no conozco ningún documento que haga una comparación significativa.
Dave Clarke

Respuestas:


7

Recientemente terminé de escribir una encuesta de Tipos de propiedad y encontré muy poco que discuta la relación entre los dos temas. Los tres documentos más cercanos que encontré son los siguientes, que curiosamente provienen de la misma conferencia:

  • Yang Zhao y John Boyland. Una interpretación de permiso fundamental para los tipos de propiedad. En el Segundo Simposio Internacional IEEE / IFIP sobre Aspectos Teóricos de la Ingeniería del Software, TASE 2008, 17-19 de junio de 2008, Nanjing, China. IEEE Computer Society, 2008., páginas 65–72.

  • Shuling Wang, Luís Soares Barbosa y José Nuno Oliveira. Un modelo relacional para la lógica de separación confinada. En En el Segundo Simposio Internacional IEEE / IFIP sobre Aspectos Teóricos de la Ingeniería del Software, TASE 2008, 17-19 de junio de 2008, Nanjing, China. IEEE Computer Society, 2008., páginas 263–270.

  • Shuling Wang y Zongyan Qiu. Un modelo genérico para el confinamiento y su aplicación. En En el Segundo Simposio Internacional IEEE / IFIP sobre Aspectos Teóricos de la Ingeniería del Software, TASE 2008, 17-19 de junio de 2008, Nanjing, China. IEEE Computer Society, 2008., páginas 57–64.

El primer documento codifica dos tipos de tipos de propiedad, a saber, propietarios como dominadores y propietarios como bloqueos, en términos de los permisos fraccionales de Boyland, que son un sistema de capacidad desarrollado para razonar sobre programas.

El segundo documento toma ideas de confinamiento similares a las utilizadas en los tipos de propiedad y las agrega a la lógica de separación.

El tercer artículo ha desarrollado un enfoque semántico que se utiliza para codificar varias disciplinas de confinamiento, como los tipos de propiedad. No estoy seguro de si su sistema también cubre la lógica de separación, y no puedo acceder a ella en este momento. Su enfoque es más bien ad hoc; Se puede ver como un documento más formal y sistemático que escribí hace un tiempo con James Noble y otros:

  • Hacia un modelo de encapsulación James Noble, Robert Biddle, Ewan Tempero, Alex Potanin, Dave Clarke El primer taller internacional sobre alias, confinamiento y propiedad en la programación orientada a objetos (IWACO), 2003.

9

La forma en que entiendo la diferencia es que los tipos de propiedad restringen la forma del gráfico de objetos , y los sistemas subestructurales (como la lógica de separación) administran los permisos para acceder al montón .

oreoreoreore

En contraste, los sistemas subestructurales como los tipos lineales y la lógica de separación dependen de la idea de los recursos . Cada región del montón es un recurso, y si no posee el recurso no puede tocarlo. Esto hace que las condiciones del cuadro sean muy fáciles: siempre se mantienen.

Una diferencia superficial (que sin embargo me confundió durante mucho tiempo) fue que los tipos de propiedad eran tipos, y la lógica de separación era una lógica de programa. Afortunadamente, si bien los tipos de propiedad nacieron en un entorno de teoría de tipos, las personas también han aplicado estas ideas a la lógica del programa.

Las dos piezas principales de trabajo teórico que conozco sobre esto son el trabajo de Kassios sobre marcos dinámicos , que Bannerjee y Naumann (y sus estudiantes) explotaron sistemáticamente en su trabajo sobre lógica regional .

Según tengo entendido, su enfoque básico es tomar la lógica de Hoare y luego:

  1. Agregue un nuevo tipo de variables de región, que utiliza para asociar objetos y regiones.
  2. Agregue un sistema de efectos a la lógica de Hoare para rastrear las lecturas y escrituras de regiones.
  3. Use los efectos para determinar si una aserción respeta el marco o no. Si es así, puedes enmarcarlo, y si no lo es, no puedes.

Cada enfoque tiene beneficios y debilidades.

  • La propiedad hace que las propiedades del marco sean significativamente menos convenientes de usar que en los enfoques subestructurales, ya que debe calcular las condiciones del marco.

  • Por otro lado, los algoritmos en los DAG admiten pruebas inductivas más bonitas en un estilo de propiedad, ya que puede desacoplar la huella de la estructura del puntero. En una especificación de estilo de separación, lo natural es dar una invariante inductiva en un árbol de expansión. Pero si el árbol de expansión que calcula el algoritmo es siempre diferente al que tiene su invariante, se encontrará con un mundo de dolor.

Mi sentido general es que la separación es más fácil de usar que la propiedad, ya que necesitamos propiedades de marco para casi cada comando en un programa imperativo. (Dave Naumann argumenta que la lógica de la región es más adecuada para la automatización, ya que la lógica de afirmación sigue siendo un viejo FOL simple, por lo que puede usar probadores de teoremas y solucionadores SMT).

EDITAR: Acabo de encontrar el siguiente artículo de Matt Parkinson y Alex Summers, La relación entre la lógica de separación y los marcos dinámicos implícitos , donde afirman dar una lógica que unifica los dos métodos.


Muchas gracias por tus ideas, Neel. Sin embargo, me he estado preguntando acerca de la relación entre los dos paradigmas, en lugar de las diferencias . Así que voy a mantener la pregunta abierta por ahora.
Uday Reddy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.