- M \to N \Longleftrightarrow M \text{ almacena un puntero a } N
-
-El conjunto de celdas vivas (o *live set*) queda determinado por:
-
-.. math::
-
- vivas = \left\lbrace N \in Celdas \big/
- ( \exists r \in Raices / r \to N ) \vee (\exists M \in vivas / M \to N )
- \right\rbrace
-
-Cabe aclarar que esta es una definición conceptual, asumiendo que el
-programa siempre limpia una dirección de memoria almacenada en el *root
-set* o una celda del *heap* cuando la celda a la que apunta no va a ser
-utilizada nuevamente. Esto no es siempre cierto y los falsos positivos que
-esto produce se conoce como un tipo de pérdida de memoria (que es posible
-incluso al utilizar un recolector de basura) llamada pérdida de memoria
-*lógica*. Esto puede no ser evitable (incluso cuando el programador no
-cometa errores) en lenguajes de programación que requieran un recolector de
-basura conservativo.
-
-Por último, siendo que el recolector de basura es parte del programa de
-forma indirecta, es común ver en la literatura que se direfencia entre
-2 partes del programa, el recolector de basura y el programa en sí. Dado
-que para el recolector de basura, lo único que interesa conocer del
-programa en sí son los cambios al grafo de conectividad de las celdas,
-normalmente se lo llama *mutator* (mutador).
+Por último, siendo que el recolector de basura es parte del programa de forma
+indirecta, es común ver en la literatura que se diferencia entre dos partes
+del programa, el recolector de basura y el programa en sí. A la primera se la
+suele denominar simplemente *recolector* y a la segunda *mutator*, dado que es
+la única que modifica (o *muta*) el grafo de conectividad.