Modelo por capas
Lo que debe ser cierto entre operaciones
Una estructura guarda datos y también información sobre ellos: cuántos hay, dónde está el último, cuánto espacio queda. Esa información solo sirve si coincide con los datos.
Un invariante es una afirmación que debe ser cierta antes y después de cada operación. Durante la operación puede romperse un momento; al terminar, tiene que volver a cumplirse.
Para el chat de casilleros, escrito en el pseudocódigo de esta ruta (en él, x ← 5 significa «guarda 5 en x», a[i] es la posición i y nada es «ningún valor»):
los mensajes ocupan los casilleros 0 a cantidad − 1, sin huecoslos casilleros desde cantidad hasta el final están vacíoscantidad ≤ capacidad (capacidad: cuántos casilleros hay)En la figura, el chat tiene tres mensajes: cantidad vale 3 y marca el primer casillero libre.
Cada operación tiene que dejar las dos ciertas.