Missing data is null
Reaching past what is there does not drop the row; it yields null.
A missing key and an out-of-range index both give null, and null keeps spreading as you reach further in:
null is one of the value shapes, not the absence of a row, so every rule still produces a tuple; the last one branches on it with = null.
This safe-navigation
null is Datamog-specific: standard Datalog has only flat, atomic values and no notion of null.